2016-07-19 29 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"