Мне удалось решить проблему, выполнив следующие действия:
Как правильно сказал Дэвид Вассер , это происходит, когда мое приложение запускается в задаче приложения, которое его запускает (т.е. , когда я открываю PDF из файлового менеджера).
Чтобы решить эту проблему, в Manifest
я добавил это к конфигурации SplashActivity
: android:launchMode="singleTask"
.
Затем я заметил, что таким образом, несколько экземпляров MainActivity
могут начать. Нажатие на кнопку «Назад» будет перемещать меня между ними. Чтобы решить эту проблему, в SplashActivity
классе до я позвонил startActivity()
и добавил: intentForActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
(документация: FLAG_ACTIVITY_CLEAR_TASK ).
Проблема, которая Я заметил, что onDestroy()
метод старого MainActivity
иногда выполняет после onCreate()
нового. Итак, вы должны быть осторожны, когда и что вы изменяете / создаете / удаляете / et c в своем методе onDestroy()
.
Возможно, есть лучшие способы достижения этого результата, но для меня это сработало.
Моя обновленная соответствующая часть Manifest
:
<activity
android:name=".SplashActivity"
android:launchMode="singleTask"
android:theme="@style/SplashTheme">
Моя обновленная SplashActivity
:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
final Uri uri = intent.getData();
Intent intentForActivity = new Intent(this, MainActivity.class);
if (uri != null)
intentForActivity.putExtra("URI", uri.toString());
intentForActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intentForActivity);
this.finish();
}
}