2017-12-17 4 views
0

私はバックグラウンドでデータを送信するためにGcmTaskServiceを使用しています。ほとんどの場合、うまく動作しますが、最近、クライアントからデータがデバイスから送信されていないという苦情が1件あります。 Iveはデバイスを持ってきて、私は自分のGcmTaskServiceのonRunTaskがこの特定のデバイス上で決して呼び出されないことに気付きました。onRunTaskが呼び出されない

これは私がサービスを開始する方法を示します。

GcmNetworkManager gcmNetworkManager = GcmNetworkManager.getInstance(FarmWorkApplication.context); 
     Class<FarmWorkSyncOutService> gcmTaskService = FarmWorkSyncOutService.class; 
     String name = gcmTaskService.getName(); 
     gcmNetworkManager.cancelTask(name, gcmTaskService); 
     OneoffTask task = new OneoffTask.Builder() 
       .setService(gcmTaskService) 
       .setTag(name) 
       .setExecutionWindow(0L, maxDelay) 
       .setRequiredNetwork(Task.NETWORK_STATE_CONNECTED) 
       .build(); 
     gcmNetworkManager.schedule(task); 

これは、マニフェストのサービス定義である:

<service android:name=".FarmWorkSyncOutService" 
     android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/> 
     </intent-filter> 
    </service> 

デバイスはWIFIでインターネットに接続されており、非常にインターネットサーフィンれますよく

この行は:

gcmNetworkManager.cancelTask(name, gcmTaskService); 

だけのサービスを保証することであるが、一度実行し、私もそれを削除しようとしましたが、それは私がGooglePlayServicesを停止力を試してみました

を支援し、そのデータを削除didntは、それが助けをdidntのこれをデバッグするために他に何ができますか? any1はなぜこれが起こるか考えていますか?

答えて

0

これは省電力モードの障害でした。私がそれを無効にすると、デバイスは同期を開始しました。サービスがバックグラウンドで実行されないようにするためには、それが賢明かどうか疑問に思ってください。

関連する問題