アプリからある程度独立している必要があるアプリケーション用のウィジェットがあります。
アクティビティ ワークフローは次のようになります。
ウィジェット -> レシーバーとして機能するアクティビティ
Receiver -> LoginPage または Activity A (ログイン状態による)
ログインページ -> アクティビティ A
アクティビティ A onKeyDown -> アクティビティ B
アクティビティ B onKeyDown -> ホーム画面。
onKeyDown を押すとアクティビティ A に送り返されるアクティビティ B まで問題はありません。FLAG_ACTIVITY_CLEAR_TOPフラグを使用し、アクティビティ B の開始時にアクティビティを終了しています。
CLEAR_TOP フラグを使用して ActivityA から ActivityB に移動すると、Activity スタックがクリアされ、ActivityB で onKeyDown() メソッドでアクティビティを終了すると想定されますが、アプリが閉じられると想定されていますが、そうではありません。なんで?
また、レシーバーで FLAG_ACTIVITY_CLEAR_TASK と FLAG_ACTIVITY_NEW_TASK を使用しようとしていますが、メカニズムがよくわかりません。これについて何か考えはありますか?