我遇到了一个有趣的问题,一个活动被多次创建,甚至在清单中被定义为单个任务或单个实例活动。这是如何复制的。例如,在主要活动中:
@Override
protected void onResume() {
Intent i = new Intent(MainActivity.class, SingleActivity.class);
startActivity(i);
}
在我的单人活动中,我有:
@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()
,但这似乎是一个丑陋的解决方案。我想知道我做错了什么
最佳答案
默认情况下,按back键完成(销毁)当前活动并向用户显示上一个活动。
所以,这是不可能的
而不是提出一个已经存在的
因为不存在任何活动。