2017-09-07 6 views
0

La mise en réseau à l'aide de HttpUrlConnection etc. (pour télécharger des données sur le serveur) est-elle possible avec JobScheduler? Ou je dois aller avec GCMNetworkManager? Comment puis-je effectuer la planification du fonctionnement du réseau?Mise en réseau avec 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; 
    } 
} 

Répondre

2

Est-ce réseau en utilisant HttpURLConnection etc (pour le téléchargement de données vers le serveur) possibles avec JobScheduler?

Bien sûr. Vous devez cependant utiliser le .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) dans le générateur JobInfo pour vous assurer que votre travail ne s'exécute pas si aucun réseau n'est disponible.

Vous devez cependant effectuer votre opération réseau dans JobService sur un thread distinct, car l'onStartJob est exécuté sur le thread principal.