2016-07-19 83 views
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; 
    } 
} 

回答

0

我不得不添加follwoing线的服务标签在清单:

android:permission="android.permission.BIND_JOB_SERVICE"