点击应用图标后,启动器会创建一个新的root活动实例&当root活动已经存在于后台,即onPause()时,将调用root活动的onCreate()。 它再次创建了一个新的root活动实例&再次代替onResume()根活动。
我知道这是因为用于启动应用程序的意图不同。 Eclipse使用没有操作且没有类别的intent启动应用程序。 Launcher使用android.intent.action.MAIN动作和android.intent.category.LAUNCHER类别的intent启动应用程序。安装程序使用android.intent.action.MAIN操作启动应用程序,没有类别。
经过长时间的搜索后,我发现以下代码正在运行。但我认为这是解决方法。除了以下代码之外,还有其他任何解决方案。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
// Activity was brought to front and not created,
// Thus finishing this will get us to the last viewed activity
finish();
return;
}
// Regular activity creation code...
}