2017-04-18 11 views
6

FirebaseJobDispatcher(JobScheduler)が動作するとは少し不明です。ユーザーがインターネット接続を失ったときに、私のアプリが実行するための接続を再度取得し、接続を回復したときにコンテンツの更新をチェックするための同期を行うために必要なもの。FirebaseJobDispatcherがネットワーク上で実行される

私は接続変更ブロードキャストリスナーを使用してJobSchedulerを使用すべきではないことを知っていますが、JobSchedulerは接続の変更がなくても実行するSmarter AlarmManagerです。

このような場合、または私はそれがどのように機能するのか誤解していますか?ユーザーがインターネット接続を回復したときにのみ起動するものはありませんか?

+0

こんにちは@tyczj、私たちはあなたと同じ要件を持っています。インターネットが利用できない状態から利用可能になると、警報放送受信機を始動させたい。私たちはこれを 'CONNECTIVITY_CHANGE'でシームレスに実現するために使用します。しかし、 'CONNECTIVITY_CHANGE'を聞いても機能しなくなったので、あなたがアプリを殺すと、' FirebaseJobDispatcher'の使い方を理解できましたか? –

+0

@CheokYanChengジョブディスパッチャは、この方法では機能しません。よりスマートなアラームマネージャです。私は現在プッシュ通知を使用しています。ユーザーがプッシュ通知を受け取ったときに、コンテンツが更新されます – tyczj

答えて

0

JobDispatcherのTestAppはかなり良い例です。 通常、Builderを使用してディスパッチャのジョブを作成することができます。ここではanswerが見つかりました。詳細についてはこちらをご覧ください。

/* a recurring job, being triggered in the time-frame in between 59-61 seconds */ 
Job.Builder builder = dispatcher 
    .newJobBuilder() 
    .setTag("SomeJob") 
    .setService(SomeJobService.class) 
    .setRecurring(true) 
    .setTrigger(Trigger.executionWindow(59, 61)); 
3

JobSchedulerはあなたには、いくつかの前提条件が(接続、バッテリーとシステムの放送)が行われたときにだけ起こるいくつかのアクションをトリガーする偉大なオプションです。あなたのケースでは、ユーザーがインターネットに接続しているときにのみ発生するいくつかの作業をスケジュールします。

JobScheduler最小API 21とGoogle Playサービスは不要です。 FirebaseJobDispatcher最小API9とPlayサービスが必要です
AndroidJobは、最小API14を持つライブラリであり、再生サービスは不要です。

このビデオは、FirebaseJobDispatcherといくつかの疑問を明確にするのに役立ちます。さらに、この投稿ではEvernoteがいいリソースです。コードの下

1

はそれだけで無線LANネットワークで動作する簡単な言葉であらゆるネットワーク上.setConstraints(Constraint.ON_UNMETERED_NETWORK)にWiFiまたはデータネットワーク

Job myJob = mDispatcher.newJobBuilder() 
       .setService(MyJobService.class) 
       .setTag(JOB_TAG) 
       .setRecurring(true) 
       .setTrigger(Trigger.executionWindow(5, 5)) 
       .setLifetime(Lifetime.FOREVER) 
       .setConstraints(Constraint.ON_ANY_NETWORK) 
       .setReplaceCurrent(false) 
       .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) 
       .build(); 

     mDispatcher.schedule(myJob); 

の変更をトリガーします。

ネットワークなしでも動作するコンスタリントを削除します。

関連する問題