我遇到了一个有趣的问题,一个 Activity 被创建了多次,即使它在 manifest 中定义为一个 singleTask 或一个 singleInstance Activity。这是如何复制的。说,在主要活动中:
@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,似乎也是如此。
唯一的解决方法似乎是 override onBackPressed()
,但这似乎是一个丑陋的解决方案。
我想知道我做错了什么