問題タブ [gcm-network-manager]
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 - Firebase JobDispatcherで定期的なタスクの期間を変更しますか?
GCM ネットワーク マネージャーを使用していましたが、Firebase JobDispatcher には GCM とその他の機能が含まれていると聞いたので、それを使用しようとしています。定期的なタスクを正常にプログラムし、正常に動作しましたが、問題は、期間を変更する必要があり、最初から修正されていないことです。
その理由は、私はアクティビティ認識サービスを使用しており、次に JobDispatcher が定期的なタスクを実行するときに、検出された現在のアクティビティに基づくようにしたいからです。たとえば、歩いている場合、次にタスクがトリガーされるのは 30 分後ですが、車に乗っている場合、その期間は 5 分です (主に、車に乗っている場合は携帯電話が無効になる可能性が高いためです)。歩いているときと比べて、短時間で異なる場所の値が提供されます)。
これは、定期的なタスクをプログラムする方法です。固定値を設定していることがわかります。このタスクによってトリガーされるサービスが、タスクの期間を変更するフィードバックを提供できるかどうかを知りたいのです。
android - 再起動後に GCMNetworkManager が PeriodicTask を実行していない
アプリがフォアグラウンド、バックグラウンド、または強制終了で実行されている場合、アプリは予想される動作を示します。ただし、再起動するとPeriodicTask
実行が停止します
関連するコードは次のとおりです。
でAndroidManifest
:
PeriodicTask 構成:
Logcat では、次のようになります。
関連するすべての詳細を追加します。
AndroidManifest.xml
主な活動
MyTaskService
build.gradle (アプリ モジュール)
Edit1: 数日間の分析の後、次のことがわかりました。
- これはデバイス固有の問題です。たとえば、nexus デバイスでは発生しません。
- これはより大きな問題の一部です。この動作を示すデバイスは
AlarmManager
、 、 、FirebaseJobScheduler
および で期待どおりに動作しませんRECEIVE_BOOT_COMPLETED broadcast receiver
。 - 1 つの回避策は、このソリューションです。ただし、このソリューションには少なくとも 2 つの問題があります。(1) アプリを強制終了すると、
AccessibilityService
権限がリセットされます。つまり、この後アプリを開くたびに、手動で許可を与える必要があります。(2)アプリが強制終了された場合、その後の再起動はヒットしませんRECEIVE_BOOT_COMPLETED broadcast receiver
- クレイジーな発見: 1 プラス デバイスでは、アプリ
test
のパッケージ構造に単語が含まれていれば、すべてが機能します!! - アプリケーションをホワイトリストに登録して [設定] > [アプリ] に移動すると (この場所と名前はデバイスによって異なる場合があります)、すべてが期待どおりに機能します。
- アプリを手動で追加する必要があるスタートアップ アプリには、WhatsApp、Facebook、Instagram などのよく知られたアプリが含まれています。これらのアプリをインストールすると、自動的にこのリストに追加されます! これを行うために、これらのメーカーのいずれかによって公開されたカスタム API はまだ見たことがありません。これは、これらのアプリがメーカー側からホワイト リストに登録されていると思わせます。