我有一个退出方法可以做到这一点:
public void quitFinalize(ServicedActivity actCtx)
{
for (ServicedActivity act : mRunningActivities)
launchActivity(actCtx, new Intent(mAppCtx, act.getClass()).setAction("--"));
}
检查 mRunningActivities 是否正常。它包含我的任务中已创建但未销毁的所有活动。所有活动都继承自:
public class ServicedActivity extends FragmentActivity implements OnClickListener
{
...
@Override
protected void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
if (/*Intent.ACTION_SCREEN_OFF*/"--".equals(intent.getAction())) // used for quitting the game
{
finish();
}
}
...
}
我注意到对于 Set 中的 2 个活动,该机制运行良好。然而,对于 3 个 Activity,Android 4.0.3 决定它应该启动(创建)Set 中的一个 Activity 的另一个实例(它似乎特别喜欢启动一个特定的 Activity,而不仅仅是任何一个)。他们完成了所有活动(因此 4 个被破坏的活动而不是原来的 3 个)
我确定不是我无意中创建了该活动 - 我的所有 launchActivity 逻辑都通过将 FLAG_ACTIVITY_REORDER_TO_FRONT 标志附加到 Intent 的方法进行过滤,因此我不能以相同的 Activity 类的两个实例结束。必须是重新创建它的操作系统。
也尝试不使用 'android:launchMode="singleTop"' 清单文件属性 - 对于应用程序中的所有活动都是如此。一样。
这里发生了什么 ?上面的 onNewIntent() 方法按预期被命中了 3 次,但在中间,Android 创建了一个新的 Activity 然后也立即终止它。
谢谢