Android - восстановите в последний раз просматриваемое Действие

Так же, как примечание я всегда рекомендовал бы объяснить игнорирование:

@Ignore("This test will prove bug #123 is fixed, once someone fixes it")

я надеюсь, что junit xml средство форматирования отчета, используемое при запущении тестов от муравья, будет однажды включать проигнорированное количество (и причины) наряду с передачей, сбоем и ошибкой.

9
задан Prags 28 February 2018 в 10:44
поделиться

3 ответа

Если ваше приложение не было «остановлено», то №1 уже должен работать, а №2 просто требует сохранения любых значений, которые не управляются автоматически, в Bundle в onSaveInstanceState () , а затем восстановить их в onRestoreInstanceState () .

Это своего рода взлом, но я думаю, что лучшим вариантом для №1 в случае фактического завершения работы приложения было бы сохранить самое последнее Activity в onResume каждого из ваших классов Activity, тогда, когда вы впервые запускаете onCreate вашего первого действия, выполните проверку, а затем запустите правильное действие ... возможно, даже вставьте пустое действие в начале. Примерно так:

StartActivity:

public class StartActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // get last open Activity
        String lastActivity = PreferenceManager.getDefaultSharedPreferences(this).getString("last_activity", "");
        if (last_activity == MyActivity2.getSimpleName()) {
            startActivityForResult(new Intent(this, MyActivity2.class));
        } else if (last_activity == MyActivity3.getSimpleName()) {
            startActivityForResult(new Intent(this, MyActivity3.class));
        } else {
            // assume default activity
            startActivityForResult(new Intent(this, MyActivity1.class));
        }
    }

    public void onActivityResult() {
        // kill the activity if they go "back" to here
        finish();
    }
}

Затем во всех остальных Activity (MyActivity1,2,3) сохраните значения следующим образом:

@Override
public void onResume() {
    Editor e = PreferenceManager.getDefaultSharedPreferences(this).edit();
    e.putString("last_activity", getClass().getSimpleName());
    e.commit();

    super.onResume();
}

You ' Мне также придется вручную сохранять / восстанавливать данные для каждого действия. Вы можете сохранить все необходимые значения в настройках внутри onPause () каждого Activity, а затем восстановить их в onResume ().

6
ответ дан 4 December 2019 в 23:06
поделиться

Имейте в виду, что onSaveInstanceState () не работает в долгосрочном состоянии, т.е. пользователь выключает телефон, а затем включает его в неопределенный момент позже. Вам нужно будет создать свой собственный механизм долгосрочного состояния, если вы хотите, чтобы ваше государство выдерживало циклы подачи электроэнергии.

1
ответ дан 4 December 2019 в 23:06
поделиться

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

http://developer.android.com/guide/topics/fundamentals.html#actstate

0
ответ дан 4 December 2019 в 23:06
поделиться
Другие вопросы по тегам:

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