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;
}
}