Android 1.5 и 1.6 предпочитают вызывать финишную активность и странное поведение кнопки «Домой» - PullRequest
1 голос
/ 12 января 2010

Платформа Android 1.5

  • Я открываю заставку в конце, я вызываю финиш (), затем я перехожу на страницу просмотра.
  • На странице просмотра, когда я нажимаю кнопку «Домой», она скрывает приложение. (B / C многозадачной функции Android)
  • Когда я снова захожу в приложение Android для запуска на рабочем столе, оно начинается с заставки.

Платформа Android 1.6

  • Я открываю заставку в конце, я вызываю финиш (), затем я перехожу на страницу просмотра.
  • На странице просмотра, когда я нажимаю кнопку «Домой», приложение скрывается. (B / C многозадачной функции Android)
  • Когда я снова захожу в приложение Android для запуска на рабочем столе, оно всегда начинается с экрана просмотра, а не с заставки, почему это так?

Я помещаю все данные в экземпляр onsave

@Override
 protected void onSaveInstanceState(Bundle outState) {
  outState.putString(WLConstants.READ_GPS, readGPS );
  outState.putSerializable(WLConstants.SEARCH_CRITERIA, searchCriteria);
  outState.putString(WLConstants.PARAM_WHERE, locationField.getText().toString());
  outState.putBoolean(WLConstants.PARAM_NEAR_ME, rNearMe.isChecked());
  super.onSaveInstanceState(outState);
  Log.v(TAG, "onSaveInstanceState()");
 } 

Я извлекаю значения из создаваемого метода

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
if(savedInstanceState != null){
Log.v(TAG,"instace found");
}else{

Log.v(TAG,"instace not found");
}
}

"Экземпляр найден" никогда не вызывается означает, что он никогда не возвращает связку по какой-либо причине, почему?

1 Ответ

1 голос
/ 12 января 2010

Я только что попробовал это с приложением на устройствах 1.5 и 1.6, которое делает то же самое & mdash; действие LAUNCHER представляет собой заставку, которая затем запускает «основное» действие и вызывает finish() для себя. Всплывающее действие также имеет атрибут noHistory.

В любом случае, после нажатия кнопки «Домой» на обоих устройствах главный экран отображался, как и ожидалось, затем снова значок запуска.

Я не думаю, что Android дает какие-либо гарантии относительно того, будет ли ваш процесс еще жив, когда вы запустите его с помощью значка запуска. Таким образом, вы можете начать с того места, где остановился ваш стек задач, или с действия LAUNCHER.

Но в вашем случае, и, по моему опыту, только сейчас, вы должны, как правило, попадать на экран "обзора" при нажатии на панель запуска. Если ваша система не до смешного перегружена.

В любом случае, о состоянии экземпляра: вы пытались увидеть, если вызов super.onSaveInstanceState(outState) первым в методе имеет какое-либо значение?

Также обратите внимание, что этот метод обычно вызывается только тогда, когда действие прекращается системой; не только когда он уходит на задний план. В этом случае вам нечего делать.

...