2017-12-13 10 views
2

私はAlarmManagerを使用して、特定の日付と時刻に設定されているアラームを設定しています。最近、私たちのアプリのユーザーは、これらのアラームがポップアップしていないと不平を言っています。また、AndroidのOガイドラインでは、アプリでバックグラウンドサービスを実行してはならず、代わりにFirebaseJobDispatcherに切り替える必要があることが記載されています。私は次の2つの質問に従います特定の日付と時刻にAndroidベースのジョブスケジューラでジョブを実行

  1. 私たちのアプリでは、特定の日時にユーザーに通知を表示する以外は、バックグラウンドタスクは行いません。この場合でも、FirebaseJobdispatcherに切り替える必要がありますか?
  2. JobDispatcherに切り替える必要がある場合、ジョブを正確に特定の日時に実行するにはどのように設定できますか?

答えて

0

ネットワークリクエストや長時間実行されるCPU操作などのバックグラウンドタスクを実行していないため、私はAlarm Managerを引き続き使用する必要があります。

最近、私たちのアプリのユーザーは、これらのアラームがポップアップしていないと不平を言っています。

doze modeトリガーが、(thisを参照してください)あなたのアラームがトリガされることが保証されていないときからです。あなたは何ができるか

これらは通知の目的に適しているドキュメントによるとAPIレベル> = 23

のためにあなたの要件ごとにAlarmManagerクラスからsetAndAllowWhileIdle()またはsetExactAndAllowWhileIdle()メソッドを使用しています。 setAndAllowWhileIdle()ドキュメント:set(int, long, PendingIntent)よう

が、このアラームは、システムが低電力アイドルモードにあるときでも、実行 に許可されます。この種類の アラームは、実際に必要な状況の場合にのみ使用する必要があります。 アイドル状態でアラームが消えることを覚えておいてください。 はカレンダー通知で、ユーザーが 。アラームが送信されると、 のシステムの一時的なホワイトリストに約10秒間、 に追加され、 への更なるウェイクロックをアプリケーションに取得させることができます。

+0

@MonicaRこれで問題は解決しましたか? –

+0

お返事ありがとうございました。完全に解決することはできません。 RedMi Note 4のような多くのデバイスに問題があります。ユーザーがバックグラウンドからアプリを強制終了した場合、通知は表示されません。このような場合、ユーザーは設定から​​アプリを明示的にホワイトリストに登録する必要があります。 Samsungにもスマートマネージャーがあり、アプリを2〜3日以上使用しないと無効にします。 – MonicaR

+0

Xiaomiデバイスの場合は、自動起動権限が必要です。そうしないと、最近のアプリからユーザーを削除するとアプリが強制終了されます。この許可を与えるようにユーザーに依頼することができます。 他のデバイスについては、https://github.com/dirkam/backgroundable-androidを参照してください。 –

関連する問題