問題タブ [alarmmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 保留中のインテントがクラッシュするこのAndroidアラームはなぜですか?
次の同期操作をスケジュールするために使用される非常に単純なコードがあります。これは、AbstractThreadedSyncAdapterを拡張するSyncAdapter内で実行されているため、そのコンテキストを使用します。SyncAdapterのみを管理するBroadcastReceiver「MyService」に対して開始されたPendingIntent。
私はそれを24時間以内に繰り返すようにスケジュールしようとしています。
ログ出力:
android - Androidのalarmmanagerの信頼性が低い
AndroidのAlarmmanager機能に問題があります。
問題は、1時間以上待つアラームが鳴らないことです。
私のアプリケーションは最初に次のようなアラームを作成します:-
アラームが鳴ると、RecieverHandlerクラス、特にこの関数がトリガーされます。-
次に、MessageDispatcherという名前のサービスを起動し、この関数を呼び出します。-
この関数は、データベースから次のアラーム時刻を取得します。これは正しく機能していると確信しています。次に、データベースの日付に基づいて、次のように新しいアラームを設定します。-
これにより、次のメッセージのアラームが作成されます。
私はこれを短時間でテストしましたが、電話内で日付と時刻を変更することにより、動作し、長時間にわたってテストしたようです。正常に発火したようです。
次に、このアラームが鳴ると、次のアラームが鳴り、これをスケジュールします。これらの部品は正常に機能しているとほぼ100%確信しています。
だから私はそれが機能しない理由のいくつかの理論だけに固執しています。
電話をデバッガーから切断したことに関係しているのではないかと思いましたが、その場合、アラームは短時間で動作するようです。
だから私の主な理論は、私が作成しているアラームマネージャが一定の時間の後に削除されているということですか?これが本当なら、これは大きな問題です。どれだけ時間が経過しても、これが機能する必要があるからです。
私のアラームが残っていることを確認するための助けは大歓迎です、ありがとう。
android - ブロードキャスト レシーバーに新しいインテントを送信すると、以前のインテントから余分な値が得られます
アプリケーションがまだ実行されており、新しいインテントがアラーム サービスによって起動されているため、ブロードキャスト レシーバーによって受信されるインテントをブロードキャストしていますが、レシーバーは以前のインテント値を表示しています。ドキュメントによると、ブロードキャスト レシーバーは onReceive() を返した後にアクティブではなくなるため、レシーバーはアラーム サービスによって起動される次のインテント値を表示する必要がありますが、それは起こっていません。正しいアプローチを伝えることができます。
これは、アクティビティからブロードキャスト インテントまでです。
これはブロードレシーバーです:
ここで、トーストは、alarmservice から 2 番目のインテントが発生した場合でも、alarmservice からの最初のブロードキャストによって送信された ID を示します (2 回目のアラームが鳴ります)。
android - Android:AlarmManagerを使用して電話をウェイクアップする場合、タスクが完了するとすぐに電話はスリープ状態になりますか?
あなたがそれを維持し終えるとすぐに電話が眠りに落ちるならば、それは私に2番目の好奇心の質問に私を連れて来ます:
効率が悪くなる前に、どのくらいの頻度で電話が起きて眠りにつくことができますか?(ずっと滞在するよりも無駄が多い)
android - 初期値でサービスを開始する
note/todo アプリで機能するリマインダー/アラーム サービスを取得しようとしています。特定のアイテムのリマインダーを設定でき、アラームがトリガーされ、通知が正常に表示されます。
私の問題は、どのService
メモ/todo アイテムがその特定のリマインダーを設定したかをどのように知ることができるかということです。ユーザーがステータスバーの通知をクリックして、それをトリガーするアイテムを表示できるようにしたいと思います。しかし、彼らはからService
受け入れないので、その情報を に渡す方法がありません。Bundles
PendingIntent
現在、次のアラームを設定しています。
通知がクリックされたときに_id
サービスが同じアイテムを起動できるように、データベース内のアイテムを送信する方法が必要です。_id
私の質問があまり混乱しないことを願っています。
ありがとう!
android - 定期的なバックグラウンド データ同期を実行するように AlarmManager をスケジュールするのに最適な場所はどこですか?
私の Android アプリケーションは定期的にサーバーをポーリングしてデータをチェックします。このポーリングは、Gmail および Google リーダー アプリがバックグラウンドでデータを同期する方法と同様に (概念的には)、アプリケーションとのユーザー インタラクションに関係なく行われることを望んでいます。アプリがインストールされると、これらの定期的な同期が開始されます。ユーザーがアプリケーションを開くのを待ちたくないので、 内部からアラームをスケジュールすることは適切ではないと思います。Activity
この場合、 に電話をかけるためのベスト プラクティスは何 AlarmManager.setInexactRepeating
ですか?
私が考えることができるいくつかの可能性は次のとおりです。
- 延長
Application
して行うonCreate
- マニフェスト内に
Service
設定されている内からスケジューリングを行います。android:enabled=true
- 特定のブロードキャスト メッセージをリッスンし、レシーバー内からスケジュールする
android - バックグラウンド サービスを使用してアクティビティを開発するためのベスト プラクティス
私のアプリケーションには、UI 用のアクティビティとバックグラウンド ポーリング用のサービスがあります。標準運賃のようです。
Activity OnCreate が呼び出されなくても、AlarmManager は Service Intent をトリガーできますか?
アクティビティとサービスを別のアプリケーションに入れるメリットはありますか? これにより 2 つの APK が作成され、1 つのアプリとしてマーケットに投入できなくなりますか? どうにかして 2 つのアプリケーションを 1 つのマニフェストに入れることはできますか?
両者のコミュニケーションについて:
-Activity と Service が同じアプリケーションの一部である場合 - 共通のオブジェクト (User オブジェクトなど) を Application スコープに保存して、2 つを共有することはできませんか?
-AIDL を気にする必要さえないように思えます - 2 つは Application スコープでもお互いに弱い参照を持つことができます - そして彼らはそのようにお互いにメソッドを呼び出すことができますか? それとも、ある種の Observer Pattern や BroadcastListener を使用して、互いにパブリッシュ/サブスクライブする必要がありますか?
android - 勝手にアラームが鳴らないようにするには?
Alarm Manager を使用して、1 時間ごとに IntentService をトリガーしています。ただし、本来はユーザーがアプリを実行するとアラームが登録されます。問題は、ユーザーがアプリを再度開くと、マネージャーが新しいサービスの実行を作成し、現在のサービスが既に実行されている場合、データベース接続のために互いにつまずき、すべてが停止することです!
もう 1 つの問題は、アラーム サービスが完全に停止することです。なんで?アラームは何があっても毎時間鳴らすべきだと思いました!
android - アラームの設定とリセットに関する Android AlarmManager の問題
アラームを使用してサーバーからデータをフェッチします。アラームを開始および停止するオプションをユーザーに提供したいと思います。これは、アラームがすでに設定されているかどうかを確認する必要があることを意味します。アラームがすでに設定されているかどうかを示すコードを見つけました。
アラームがすでに設定されている場合はキャンセルしますが、設定されていない場合は設定します (トグルのように)
問題は、これが一度しか機能しないことです。上記のコードで既存のアラームを初めてチェックすると、アラームがないことを示す null が返されますが、アラームをキャンセルすると、何かへのポインタが返されますが、アラームは実行されていません。
ここにアラームを設定するコードがあります
アラームをキャンセルするコードは次のとおりです。
PendingIntent をなくすためにアラームをキャンセルした後、何かをリセットする必要がありますか。
android - IntentServiceとAlarmManagerの通信
アラームマネージャーはPendingIntentをIntentServiceに送信する必要がありますか、それとも保留中のインテントをターゲットにしてstartService()を発行するブロードキャストレシーバーに送信する方がよいでしょうか。