永続的な通知を作成できるバックグラウンド サービスがあります。ユーザーが通知をクリックすると、アクティビティが開始されます。その後、ユーザーはホームボタンを押して、このアクティビティを停止させることができます。
その後、ユーザーが通知をもう一度クリックすると、同じアクティビティを再起動 (および表示) したい (Android がまだそれを破棄していない場合 - できることを感謝します) ため、GUI の状態はユーザーが残したままになります。
どうすればこれを達成できますか?
アクティビティのマニフェスト エントリ
<activity android:name=".mrwidget.MrWidget" android:theme="@android:style/Theme.NoTitleBar" android:launchMode="singleTask">
<intent-filter><action android:name="android.intent.action.MAIN"> </action>
<category android:name="android.intent.category.LAUNCHER"></category>
</intent-filter>
</activity>
私が求めているのは、ホームボタンを押したときに表示される「最近のアプリのリスト」からアクティビティが選択された場合と実質的に同じ動作です。
詳しく説明すると、最初に通知をクリックしたときに、次を使用してアクティビティを正常に作成しました。
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mService.startActivity(i);
ホームボタンを押してこのアクティビティから切り替え、ホームボタンを押したままにして「最近のアプリリスト」を表示し、そこからアクティビティを選択すると、期待どおりに動作します-アクティビティはそのままの状態で表示され、すべて良い。
後で同じ通知を選択するときも同じ動作が必要です。つまり、以前に作成されたアクティビティが表示されます。私はこれを使用してこれをやろうとしました:
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
activity.startActivity(intent);
ここで、「アクティビティ」は、ユーザーが最初に通知を選択したときに作成されたアクティビティへの参照ですが、これを行ってもアクティビティは表示されません。