HomeActivity を再起動し、Intent で追加の「relaunchstatus」を設定しています。アクティビティの onCreate() メソッドで、この値を確認し、存在する場合はアラートを表示します。
このアクティビティの起動モードは ですandroid:launchmode="singleTask"
。
この問題は、ユーザーがこのアラートを表示して閉じ、[戻る] ボタンを押してアクティビティを再度閉じた後に発生します。ここで、「ホーム」ボタンを長押しして最近のアプリのリストから起動すると、追加の「relaunchstatus」を含む同じインテントが使用され、再びアラートが表示されます。
これは、ユーザーが最近のアイテムから来る限り続きます (OK、最近の起動アプリは、追加の「relaunchstatus」が設定された同じインテントを使用している可能性があります)。
したがって、アクティビティが終了する直前に getIntent().removeExtra("relaunchstatus") を使用して BACK_KEY プレスを処理することで、このエクストラを削除しようとしましたが、このエクストラは最近のアイテムからの新しい起動にまだ存在します。
ただし、ランチャーメニューアイコンからアプリを起動した場合はそうではありません。
更新:アクティビティの getIntent() は、それを起動したインテントのコピーを提供すると思います。そのため、変更が永続的になる同じオブジェクトへの参照とは異なります。この場合、現在のデバイスの GUI (HTC Sense など) から実行する必要があります。最近の項目はそのインテントにバインドされていますが、これは不可能でしょうか?