2017-02-02 27 views
0

我正在使用Firebase作業調度程序安排服務,但這不會觸發我的服務類別。Firebase作業調度程序不會觸發我的服務類別

我需要幫助來實施這項服務。

的minSdkVersion 16

targetSdkVersion 25

MainActivity.java

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Log.d("SCHEDULER", "onCreate()"); 

    // Create a new dispatcher using the Google Play driver. 
    FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this)); 
    Job myJob = dispatcher.newJobBuilder() 
      .setService(MyJobService.class) 
      .setRecurring(true) 
      .setTrigger(Trigger.executionWindow(10, 20)) 
      .setRetryStrategy(RetryStrategy.DEFAULT_LINEAR) 
      .setTag("location-update-job") 
      .setLifetime(Lifetime.FOREVER) 
      .build(); 

    dispatcher.mustSchedule(myJob); 

} 
} 

MyJobSerivce.java

import android.util.Log; 

import com.firebase.jobdispatcher.JobParameters; 
import com.firebase.jobdispatcher.JobService; 

public class MyJobService extends JobService { 
    @Override 
    public boolean onStartJob(JobParameters job) { 
     Log.d("SCHEDULER", "onStartJob()"); 
     return false; 
    } 

    @Override 
    public boolean onStopJob(JobParameters job) { 
     Log.d("SCHEDULER", "onStopJob()"); 
     return false; 
    } 
} 

的AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.alugalogo.igor.jobdispatcher"> 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <service 
     android:exported="false" 
     android:name=".MyJobService"> 
     <intent-filter> 
      <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE"/> 
     </intent-filter> 
    </service> 
</application> 

我只得到「onCreate()」日誌結果。

我的代碼有什麼問題?

請幫忙!

+0

有關其Android版本哪個設備會發生這種情況? – mdiener

回答

1

嘗試添加到您的工作建設者:

.setConstraints(Constraint.ON_ANY_NETWORK) 
// constraints that need to be satisfied for the job to run 
+0

我也試過,但不要觸發我的服務 –

+1

爲什麼甚至有必要呢? –

1

一旦有標籤的工作被創建,使用相同的標籤新的工作將被默認拒絕。要使用相同的標籤重新創建作業,應在JobBuilder實例上使用.setReplaceCurrent(true)方法。

因此,您可以嘗試使用此方法以期望的開始時間重新創建作業。

0

兩個錯誤:

  1. 返回falseonStartJob

    ,這意味着:所有的工作就完成了!
    的javadoc:

    @return {@code true} if there is more work remaining in the worker thread, {@code false} if the 
    * job was completed. 
    
  2. 返回falseonStopJob

    ,這意味着:所有的工作完成後,不重新安排!
    的javadoc:@return true if the job should be retried

0

嗨,你已經添加到體現BIND_JOB_SERVICE你只有ACTION_EXECUTE:

<service 
     android:name=".MyJobService" 
     android:permission="android.permission.BIND_JOB_SERVICE" 
     > 
     <intent-filter> 
      <action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE" /> 
     </intent-filter> 
    </service> 
相關問題