2010-01-14 4 views
13

Скажем, я запускаю свое приложение с главного экрана, просматриваю некоторые действия, затем нажимаю домашний ключ и делаю что-то еще в приложении Gmail.Восстановить стек приложения Android от фона

После того, как я закончил проверку своей почты, я снова нажимаю домашний ключ, чтобы оставить приложение Gmail и снова щелкнуть значок своего приложения на главном экране, чтобы вернуться к нему.

Когда я вернусь в свое приложение, я хочу, чтобы он вернулся к последнему действию, на котором я был, а не начал совершенно новый сеанс. Я пытался понять это весь день.

Мой манифест для моей первой деятельности выглядит следующим образом:

<activity android:name=".Main" 
       android:label="@string/app_name" 
       android:screenOrientation="portrait" 
       android:alwaysRetainTaskState="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Категория атрибут LAUNCHER делает мое приложение всегда начинается в деятельности Main, так что я не знаю, как идти о восстановлении последней активности. Люди сказали мне использовать sharedpreferences, чтобы сохранить последнее действие и загрузить его на Launch, но я не думаю, что это было сделано так, потому что это не очень элегантно.

+0

Ваш манифест выглядит хорошо; он должен работать так, как вы ожидаете. Любой шанс, что вы видите это только под отладчиком, как этот практически идентичный вопрос? http://stackoverflow.com/questions/2061143/android-keep-tasks-activity-stack-after-restart-from-home/2061447 –

+5

Я понял это, так как получил ваш ответ, это не было связано с отладкой eclipse но скорее это связано с конфигурацией запуска: у меня было действие запуска, установленное на: Запустить действие по умолчанию на вкладке Android. Я изменил это на «Ничего», и он сделал трюк. не могу поверить, что я так долго это понял! спасибо – jlim

+0

Ah ha, также приятно знать! –

ответ

0

Попробуйте использовать один из них в манифесте:

<activity android:launchMode=["multiple" | "singleTop" | 
           "singleTask" | "singleInstance"] ... 
1

Я думаю, что его единственный путь, потому что то, что происходит, когда вы запускаете приложение, является то, что приложение Launcher посылает намерение «android.intent.action.MAIN «И единственным действием в вашем приложении, которое отвечает на это намерение, является ваша основная деятельность, поэтому он активируется. Таким образом, единственное, что вы можете сделать, это сохранить где-то ваш сеанс и начать работу, если уже сохраненный сеанс восстановит приложение до предыдущего состояния.

0

Правильно ли включены функции onResume() и onPause?

protected void onResume(){ 
    super.onResume(); 
} 

protected void onPause() { 
    super.onPause(); 
} 
Смежные вопросы