我遇到了一个有趣的问题,一个活动被多次创建,甚至在清单中被定义为单个任务或单个实例活动。这是如何复制的。例如,在主要活动中:

@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键完成(销毁)当前活动并向用户显示上一个活动。
所以,这是不可能的
而不是提出一个已经存在的
因为不存在任何活动。

07-26 00:06