問題タブ [android-job]
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 JobScheduler
シナリオ
こんにちは、HomeScreen に来たときに起動する JobService があります。このジョブ サービスは、DB から要求を取得し、インターネットが利用可能なときはいつでも実行します。そのため、デバイスがオフラインの場合でも、DB にトランザクションを挿入すると、インターネットが接続されるたびに JobService がそれらのトランザクションを実行します。
問題
問題は、多くの画面から HomeScreen にアクセスすることです。そのため、HomeScreen にアクセスするたびに、JobService を再起動します。したがって、インターネットが来る前にホームスクリーンに 3 回アクセスした場合、同じタスクに対して 3 つの異なるサービスが実行されています。そのため、サービスが既に実行されているかどうかを確認したかったので、サービスを開始しません。
私が試したこと
JobService を開始するコードは非常に単純です。私はそれを開始して呼び出すメソッドを書きましたOnCreate()
私は電話をかけexecuteQueue
ますonCreate()
。StackOverflow で検索したところ、次のリンクが見つかりました。
AndroidでJobServiceが実行されているかどうかを確認するには? .
したがって、JoService が実行されているかどうかを確認するために、HomeScreen に次のメソッドがあります。
しかし、この方法では、実行中の JobService がリストされることはなく、毎回表示false
されるため、JobService の複数のインスタンスという同じ問題が再び発生します。
私の質問が明確になったことを願っています。
android - アプリケーションの起動時に実行されるべきではないジョブ
私は Evernote lib から android-job を持っています。ジョブは、特定の状況で定期的に実行されるように設定されています。したがって、ジョブビルドは、定期的にジョブを開始したい場合にのみ呼び出されます (これはアプリの開始時ではありません)。
JobService を作成します。
JobCreator:
アプリケーション クラスで、ジョブを登録するために必要な行を追加します。
この時点で、アプリケーションが開始され、JobService クラスが作成されます。(OK)しかし、このクラスには、このメソッドscheduleJobPeriodicallyがあり、このメソッドは起動されますが、明示的に起動しないため、起動されるべきではありません。アプリをデバッグ モードで起動しましたが、ジョブのタグを設定する JobRequestBuilder だけでなく、定期的な作成が直接呼び出されていないことも確かです。しかし、onRunJobのコードが起動され、それが問題です。
少し早いですがお礼を。
android-jobscheduler - Oppo Realme1 Job Schduler 定期作業の最小間隔は 1 時間です
現在、私は使用してWorkManager 1.0.0-alpha05
います。以下を使用して定期的なWork Requestを設定しますcode
。間隔が 1 時間未満の場合Oppo Realme
、(Android バージョン - 8.1.0 ではColorOSVersion V5.0
) 時間にジョブが実行され1
ます。時間間隔を超える1
と、正確な時刻にジョブが実行されます。interval が hr より小さい場合1
、ジョブは1
hr で実行されます。
必要なログまたは情報をお知らせください:
スケジュール定期ジョブのコード:
他のすべてのデバイスで定期作業の要求間隔は適切です。Oppo Realme 1 では、1
時間に作業を実行します。
Oppo Realme 1: 間隔 15 分
以下のコマンドを使用して Job Schduler をデバッグします。
adb shell dumpsys jobscheduler
Oppo Realme 1: 間隔 1 時間 10 分
ログ:
その他のデバイス:
ログ:
また、別のライブラリを使用してみます。Job Scheduler と Android-Job で同じ動作を見つけました。ジョブ期間の長さは 15 分ですが、1 時間で実行されますが、firebase ジョブ ディスパッチャ ジョブを使用しようとすると、正しい 15 分間隔で実行されます。
以下のコマンドを使用してジョブ スケジューラと Android ジョブをデバッグします: adb shell dumpsys jobscheduler
ジョブ スケジューラ:
インターバル:15分 出力 :1時間
ログ:
Android ジョブ:
間隔: 15 分 出力: 1 時間:
ログ:
Firebase ジョブ ディスパッチャー:
以下のコマンドを使用して、firebase job Dispatcher をデバッグします: adb shell "dumpsys activity service GcmService | grep com.jobscheduler_periodic"
インターバル:15分 出力:15分
ログ:
android - Evernote Job から Workmanager への移行
バックグラウンド同期用のアプリにhttps://github.com/evernote/android-jobを使用しています。現在、Workmanager への移行を計画しています。
私の質問は、私たちの新しいビルドでは、workmanager に関連するクラスを含め、android-job に関連するクラスを evernote ライブラリと共に削除するということです。既存のユーザーの場合、この新しいバージョンにアップグレードした後、古いジョブが解雇されたらどうなりますか? 呼び出し中にアプリがクラッシュした場合は?
アップグレード中にジョブ関連ファイルを削除することは良い方法ですか?