2017-06-07 26 views
1

firebaseジョブディスパッチャからジョブをセットアップしました。これはX時間後に実行する必要があります。アプリが開いているとき、またはバックグラウンドでは正常に動作しますが、アプリが閉じているときは機能しません。アプリケーションが終了するとFirebaseジョブディスパッチャが実行されない

多くの人がこの問題に直面していますが、そのような問題はGithubでまだ開いていますが、解決策が見つかりませんでした。 .setRecurring(真)、それを発射するが、アプリを開いて、一度だけ、それが繰り返されるとアプリが閉じた状態でも正常に動作を作る

public void setupJob(){ 
    FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this)); 
    final int periodicity = (int) TimeUnit.HOURS.toSeconds(3); 
    final int toleranceInterval = 30; 

    Job myJob = dispatcher.newJobBuilder() 
      .setService(MyScheduler.class) 
      .setTag("MY_JOB_TAG") 
      .setRecurring(false) 
      .setLifetime(Lifetime.FOREVER) 
      .setTrigger(Trigger.executionWindow(periodicity, periodicity + toleranceInterval)) 
      .setReplaceCurrent(false) 
      .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) 
      .build(); 

    dispatcher.mustSchedule(myJob); 
} 

は、ここに私のコードです。

お願いします!

答えて

1

あなたはテストにAndroidのどのバージョンを使用していますか?

Android Marshmallowは、新しい省電力機能を導入しました。これらの機能のうちの1つは、デバイスが長期間使用されていないときに、バックグラウンドCPUやネットワークアクティビティを延期してバッテリ消費を抑えるDozeです。もう1つはApp Standbyであり、ユーザーが最近にやりとりしていないアプリのバックグラウンドネットワークアクティビティを防ぎます。

参照:
https://developer.android.com/training/monitoring-device-state/doze-standby.html

も(小米科技から例MIUI Huawei社から、EMUIのための)いくつかのカスタムAndroidのリリースはFirebaseから(たとえば通知をバックグラウンドでアプリケーションを実行しているか、受信できるように、追加の権限を持っていることに留意すべきですクラウドメッセージング)。

+0

どのようにカスタムAndroidで処理するには? – dhuma1981

関連する問題