У меня возникла интересная проблема, когда Activity создается несколько раз, даже если она определена как singleTask или singleelInstance Activity в манифесте. Вот как это можно воспроизвести. Скажем, в основной деятельности:android singleinstance activity not single if back button нажато
@Override
protected void onResume() {
Intent i = new Intent(MainActivity.class, SingleActivity.class);
startActivity(i);
}
в моем SingleActivity, у меня есть:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Log.i("SingleActivity", "onCreate " + System.identityHashCode(this));
...
}
и в манифесте, у меня есть:
<activity android:name=".SingleActivity"
android:launchMode="singleInstance"
/>
теперь, если я запустить приложение , все выглядит нормально, ожидайте в одном случае: если я нажму кнопку «назад», тогда как SingleActivity
находится впереди, он переместится обратно на MainActivity
, где MainActivity.onResume()
создаст еще SingleActivity
вместо того, чтобы выдвинуть тот, который уже существует. это то, что я знаю, потому что в журнале отображается другой хэш-код идентификатора.
То же самое верно, если режим запуска singleTask.
Единственным обходным решением является переопределение onBackPressed()
, но это кажется уродливым решением.
Интересно, что я делаю неправильно
Здравствуйте, сделал мой ответ помог? Любая обратная связь? –
да, это помогло, спасибо :) –
Тогда вы должны проголосовать за ответ, который решил вашу проблему, вот как работает Stackoverflow! –