0
我創建了一個示例來了解JobService如何工作。在下面的代碼中,我使用啓動JobService的方法onclik()來獲得MainActivity。在運行時,當onClikc methos被稱爲 應用程序崩潰,沒有任何的logcat輸出,但我收到一個對話框說:不幸的是,JobServiceTest_00已經停止JobService導致應用程序崩潰
請準備在MainActivity和TestJobService alook,讓我kknow什麼原因導致這種崩潰
注:TestJobService註冊在清單文件
MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View v) {
ComponentName mServiceComponent = new ComponentName(this, TestJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(kJobId++, mServiceComponent);
builder.setMinimumLatency(5 * 1000); // wait at least
builder.setOverrideDeadline(10 * 1000); // maximum delay
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED); // require unmetered network
builder.setRequiresDeviceIdle(true); // device should be idle
builder.setRequiresCharging(false); // we don't care if the device is charging or not
JobScheduler jobScheduler = (JobScheduler) getApplication().getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(builder.build());
}
public void cancelAllJobs(View v) {
JobScheduler tm = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
tm.cancelAll();
}
}
TestJobService:
public class TestJobService extends JobService {
private final static String TAG = TestJobService.class.getClass().getSimpleName();
@Override
public boolean onStartJob(JobParameters params) {
Log.w(TAG, SubTag.bullet("onStartJob"));
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.w(TAG, SubTag.bullet("onStopJob"));
return true;
}
}