android:launchMode =“singleTask”不会阻止多个根活动共存

时间:2012-11-28 03:08:31

标签: android instance launcher single-instance launchmode

我的目的是确保任务中的根活动在任何条件下只有一个实例。所以我设置了android:launchMode =“singleTask”,在大多数情况下工作正常。

但是,如果我将我的任务快速切换到其他人并多次返回,则launchMode设置似乎失效。我观察到在上一个活动被销毁之前创建了一个新的活动实例,因为下面记录了日志。

有人请帮助提供一个完美的解决方案,以确保在任何情况下根活动的一个实例?

提前致谢

11-28 10:43:41.158: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@40523a90 onPause
11-28 10:43:41.158: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@40523a90 onResume
11-28 10:43:41.468: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@40523a90 onPause
11-28 10:43:41.468: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@40523a90 onResume
11-28 10:43:41.818: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@40523a90 onPause
11-28 10:43:41.868: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@4054e0a8 onCreate
11-28 10:43:42.848: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@4054e0a8 onStart
11-28 10:43:42.868: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@4054e0a8 onResume
11-28 10:43:42.868: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@4054e0a8 onPause
11-28 10:43:42.868: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@4054e0a8 onResume
11-28 10:43:42.868: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@40523a90 onStop
11-28 10:43:42.878: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@40523a90 onDestroy
11-28 10:43:42.928: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@4054e0a8 onPause
11-28 10:43:42.928: W/Launcher(15718): Function Called: com.firebear.launcher.Launcher@4054e0a8 onResume

1 个答案:

答案 0 :(得分:0)

您是否在启动其他活动时在根活动上调用finish()?如果是,请删除该语句。

根活动通常只创建一次,只有在它被销毁时才会重新创建。这是正常的应用程序行为,没有在清单中设置任何标志。如果根活动已存在,则会调用onStart()onResume()