Потеря активности при работе в фоновом режиме - PullRequest
2 голосов
/ 05 мая 2020

У меня четыре действия в моем приложении: MainActivity LoginActivity ResetActivity ContentActivity

MainActivity запускает LoginActivity автоматически.

LoginActivity содержит две кнопки для:

Go ResetActivity / Go ContentActiviy.

если пользователь выбирает ResetActivity, это действие вызывает себя три раза (повторное обращение), просто мы увеличиваем «шаг» (параметр int).

Пути действий:

MainActivity ===> LoginActivity ===> ResetActivity (шаг 1) ===> ResetActivity (шаг 2) ===> ResetActivity (шаг 3).

Моя проблема в том, что ResetActivity работает в фоновом режиме, мое приложение запускается с MainActivity, я хочу сохранить Activity с текущим значением шага.

Я пробовал использовать в ResetPasswordActivity

@Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putInt("currentStep", step);
    }
    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        avedInstanceState.getInt("currentStep", step);
    }

Есть ли у вас идеи, как решить эту проблему?

1 Ответ

1 голос
/ 05 мая 2020

Android всегда запускайте действие с android.intent.action.MAIN в вашем manifest, если приложение не запущено, тогда оно запускает действие сверху стека.

В вашем resetActivty используйте это:

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

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

Затем в вашем MainActivity используйте это:

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

    Class<?> activityClass;

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

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