Как заставить приложение для Android возвратиться к последнему открытому действию при перезапуске?

Я использую travis-ci для этого лучше, и при каждом коммите будет автоматически создавать и развертывать страницы github, и это не так уж сложно, просто добавьте travis.yml и обновите baseurl в angular.json для сборки

.

вот так:

"baseHref": "https://username.github.io/repo-name/"

как пример в моем случае:

"baseHref": "https://malbarmawi.github.io/angular-lessons/"

travis.yml

[110 ]

наконец, получите github token , вы можете проверить мой проект

в этой статье, которая поможет мне в этом Развертывание вашего приложения Angular на GitHub Pages используя Travis-CI

39
задан Gray 21 February 2011 в 19:13
поделиться

3 ответа

При запуске с помощью значка на главном экране Android всегда запускает действие с фильтром android.intent.action.MAIN в вашем AndroidManifest.xml, если только приложение не запущено (в этом случае оно, очевидно, восстановит активность поверх стек).

Для достижения того, что вы описали, вы можете просто сохранить последнее видимое действие в SharedPreferences и иметь действие Диспетчер , которое запускает последнее действие в соответствии с предпочтениями.

Таким образом, в каждом действии вы хотите автоматически перезапускать:

@Override
protected void onPause() {
    super.onPause();

    SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
    Editor editor = prefs.edit();
    editor.putString("lastActivity", getClass().getName());
    editor.commit();
}

И Диспетчер действие, подобное следующему:

public class Dispatcher extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Class<?> activityClass;

        try {
            SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
            activityClass = Class.forName(
                prefs.getString("lastActivity", Activity1.class.getName()));
        } catch(ClassNotFoundException ex) {
            activityClass = Activity1.class;
        }

        startActivity(new Intent(this, activityClass));
    }
}

Замечания

  • Вы можете создать базовый класс для переопределения onPause
  • Очевидно, что действие Диспетчер должно быть действием android.intent.action.MAIN
49
ответ дан Josef Pfleger 27 November 2019 в 02:43
поделиться

Это не так сложно. Вам просто нужно манипулировать манифестом.

AndroidManifest.xm

<activity
     android:name=".MainActivity"
     android:alwaysRetainTaskState="true"
     android:exported="true"
     .
     .
     .

Читайте об «android: exported» & amp; 'android: alwaysRetainTaskState' здесь:

android: экспортировано

android: alwaysRetainTaskState

6
ответ дан Shayan_Aryan 27 November 2019 в 02:43
поделиться

Это поведение по умолчанию, и этот вопрос уже задавался несколько раз раньше: Android: keep стек действий задачи после перезапуска из HOME
Android Запустить приложение из последнего действия

Обратите внимание, что если вы запускаете приложение из Eclipse, это нарушает функциональность по умолчанию. Изменение конфигурации запуска на отсутствие активности должно исправить ситуацию.

Однако, поскольку это поведение было исправлено в выпуске 0.9.6 плагина ADT для Eclipse за последние несколько недель, вам больше не нужен этот обходной путь:

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

4
ответ дан 27 November 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: