履歴スタックでのアクティビティの管理に問題があります。
バックグラウンド:
Main と Preference という 2 つのアクティビティがあります。
起動時に通知を開始するブロードキャストレシーバーを作成しました。通知により、メイン アクティビティが開始されます。フラグは次のとおりです: Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP (インテントおよび通知用) Notification.FLAG_AUTO_CANCEL。(ほとんどのチュートリアルでは、放送受信機は通知を開始するサービスを開始しました。しかし、私は放送受信機で直接通知を開始しています。私にとっては問題なく動作していますが、注意してください。)
設定アクティビティを開始するインテントには、フラグが設定されていません。
問題
- Launcher から Main アクティビティを開始し、Preference アクティビティを開きます。
- Preference アクティビティで通知をクリックすると、Main アクティビティが再度起動されます。設定アクティビティを再度開きます。
- ホームを押して、メイン アクティビティを開くアプリケーションを起動します。
- アプリを終了する代わりに戻るをクリックすると、Preference アクティビティ (以前に開いたもの) に移動し、別の戻ると Main アクティビティ (以前に開いたもの) に移動します。
私の最後のアプリでは、 activityMode="singleInstance" を使用して、通知から作成されるアクティビティの新しいインスタンスを取り除きました。しかし、私はこれをより良い方法、つまり正しいフラグを使用して修正したいと考えています。