2

私の意図は、タスクのルート アクティビティがどのような条件でもインスタンスを 1 つだけ持つようにすることでした。だから私は android:launchMode="singleTask" を設定しました。これはほとんどの場合うまくいきました。

ただし、自分のタスクを他のタスクにすばやく切り替えて何度も元に戻すと、launchMode 設定の効果が失われるように見えました。以下のログがキャプチャされているように、以前のインスタンスが破棄される前に、アクティビティの新しいインスタンスが作成されたことを確認しました。

任意の条件でルート アクティビティの 1 つのインスタンスを確実にするための完璧なソリューションを提供してくれる人はいますか?

前もって感謝します

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
4

1 に答える 1

0

finish()別のアクティビティを開始しているときに、ルート アクティビティを呼び出していますか? もしそうなら、その発言を削除してください。

通常、ルート アクティビティは一度だけ作成され、破棄されたときにのみ再作成されます。これは、マニフェストでフラグを設定しない場合の通常のアプリケーションの動作です。ルート アクティビティが既に存在する場合は、呼び出されますonStart()onResume()

于 2013-02-16T09:51:16.910 に答える