AlarmManagers が無期限に (またはシステムの再起動まで、またはタスク キラーが現実的に消去するまで) 存続し、ガベージ コレクションを回避するように宣言および初期化する必要がある適切なコンテキストは何ですか?アプリケーション全体の範囲。
私が AlarmManager を使用している理由は、常にサービスを実行する必要性を改善するためです。しかし、この偉業を達成するために、AlarmManager はどこで作成されるのでしょうか? アラームオブジェクトが最終的にはそれとともに消えてしまい、アラームの発火が停止するため、オフ/破棄されるサービスでは作成できないと思います-そうではありませんか?
アラームの onReceive の BroadcastReceiver の拡張として MyAlarm クラスが作成され、AlarmManager がこのクラスのコンストラクターで初期化される、別の質問投稿からの AlarmManager の例のアイデアが気に入りました。しかし、複数のコンテキストで MyAlarm インスタンスが必要な場合、この実装はどのように機能しますか。複数の Activity オブジェクトにまたがるイベント ハンドラーからなど。複数のウィジェットのイベント ハンドラーから。ワーカー サービス内から。これらはすべて、アラームを無効または有効にする必要がある場合があります。私の推測では、アラームを処理する必要があるすべての場所にローカル インスタンスを作成します。pendingIntent はすべてのインスタンスで同じであるため、事実上、仮想「シングルトン」で作業することになります。
発生する可能性のあるアラーム マネージャの「ガベージ コレクション」をテストする方法がわからないため、これは現時点では概念的なものにすぎません。数時間後、アラームがランダムに鳴らなくなったとき。私の目標は、電話が再起動されず、タスクがユーザーによって手動で強制終了されない場合、アラームを無期限に発火させ続けることです。ありがとう