2017-09-07 18 views
0

JobScheduler에서 HttpUrlConnection 등 (서버로 데이터 업로드 용)을 사용하는 네트워킹이 가능합니까? 아니면 GCMNetworkManager를 사용해야합니까? 네트워크 운영 일정을 어떻게 잡을 수 있습니까?Jobscheduler와의 네트워킹

MainActivity.class

jobScheduler = (JobScheduler)getSystemService(JOB_SCHEDULER_SERVICE); 
btnStartJob.setOnClickListener(new View.OnClickListener(){ 

    @Override 
    public void onClick(View v) { 

     ComponentName jobService = 
       new ComponentName(getPackageName(), MyJobService.class.getName()); 
     JobInfo jobInfo = 
       new JobInfo.Builder(MYJOBID, jobService).setPeriodic(10000).build(); 

     int jobId = jobScheduler.schedule(jobInfo); 
     if(jobScheduler.schedule(jobInfo)>0){ 
      Toast.makeText(MainActivity.this, 
        "Successfully scheduled job: " + jobId, 
        Toast.LENGTH_SHORT).show(); 
     }else{ 
      Toast.makeText(MainActivity.this, 
        "RESULT_FAILURE: " + jobId, 
        Toast.LENGTH_SHORT).show(); 
     } 
}}); 

MyJobService.class

public class MyJobService extends JobService { 
    public MyJobService() { 
    } 

    @Override 
    public boolean onStartJob(JobParameters jobParameters) { 
     Toast.makeText(this,"MyJobService.onStartJob()",Toast.LENGTH_SHORT).show(); 
     //networking is not working here 
     return false; 
    } 

    @Override 
    public boolean onStopJob(JobParameters jobParameters) { 
     Toast.makeText(this, 
       "MyJobService.onStopJob()", 
       Toast.LENGTH_SHORT).show(); 
     return false; 
    } 
} 

답변

2

등 JobScheduler 가능 (서버에 데이터를 업로드) HttpURLConnection의를 사용하여 네트워크 있습니까?

물론. 그래도 JobInfo 빌더에서 .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)을 사용해야 네트워크를 사용할 수없는 경우 작업이 실행되지 않습니다.

onStartJob은 주 스레드에서 실행되기 때문에 별도의 스레드에서 JobService의 네트워크 작업을 수행해야합니다.