Восстановление стека приложений Android из фона - PullRequest
15 голосов
/ 14 января 2010

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

После того, как я проверил свою почту, я снова нажимаю клавишу "Домой", чтобы выйти из приложения 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, но я не думаю, что это должно быть сделано так, потому что это не очень элегантно.

Ответы [ 3 ]

1 голос
/ 31 марта 2010

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

0 голосов
/ 01 апреля 2010

Правильно ли реализованы onResume () и onPause?

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

protected void onPause() {
    super.onPause();
}
0 голосов
/ 27 марта 2010

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

 <activity android:launchMode=["multiple" | "singleTop" |
                              "singleTask" | "singleInstance"] ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...