Android Launcherのバグをメモします

1711 ワード

このBugは、Androidが5.0バージョンで解決されていないまでテストされています.また、いくつかの大手工場のアプリ、例えば新浪微博にもこの問題があります.
問題:Androidシステムに付属のInstallerでアプリケーションをインストールした後、以下の2つの異なる表現があります:1、ユーザーは直接installerインタフェースでアプリケーションを開きます.その後homeキーを押してバックグラウンドで実行し、アプリケーションのlauncherアイコンまたはショートカットをクリックすると、アプリケーションの最初のページから再起動します.2,ユーザはinstallerインタフェースのインストールが完了したら,直接クリックして完了し,launcherアイコンを見つけてクリックしてアプリケーションを起動する.ホームキーのバックグラウンドを押して、再びアイコンをクリックして入ると、前回ホームキーを押した前に表示されたActivityが表示されます.
テスト実験:テストにより、あるアプリケーションから別のアプリケーションを起動すると、この問題が発生することがわかりました.以下、一例で説明します.既存のApp 1とApp 2.App 1にはActivityがあり、次のコードでApp 2を開く.
PackageManager packageManager = getPackageManager();Intent intent;
intent = packageManager.getLaunchIntentForPackage("cc.ninty.app2");
if(intent==null) { 
  System.out.println("APP not found!");
}
startActivity(intent);

App 2にはActivity,Activity 1,Activity 2が2つあり、Activity 1で自動startActivity 2に行く.以上の3つのActivityのlaunch modeはデフォルトのstandardです.App 1が実行され、3つのActivityのtaskidがモニタされます.
App 1で起動したApp 2の2つのActivityのtaskidはApp 1とは異なり、HomeキーのバックグラウンドのたびにAPP 2のlauncherアイコンをクリックすると、Activity 1とActivity 2が再作成され、taskidは前回と同じになることがわかります.
問題原因:Androidは最初からバグが発生し、修復されていません.以下は探している資料です.https://code.google.com/p/android/issues/detail?id=2373 https://code.google.com/p/android/issues/detail?id=26658 http://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508#16447508
回避策:2回目にlauncherまたはショートカットでアプリケーションを起動すると、Activity 1が再作成されますが、この場合のActivity 1はそのtaskのroot(つまり、このtaskが最初に所有したactivity)ではありませんので、Activity 1のonCreateメソッドで以下の判断を書くことができます.
if ( !isTaskRoot() )  { 
  finish(); 
  return;
}

taskに他のActivityがある場合は重複作成しないことを示します.