Cómo pasar parámetros a un JobService
En mi post anterior expliqué como crear un JobSerivce, este job service recibe parámetros; Para pasar parámetros al JobService usamos la clase PersistableBundle de la siguiente manera.
Esta clase acepta tipos básicos, enteros, cadenas de caracteres y algunos otros, pero no Parcelables, por lo tanto lo que hice fue crear en mi clase Alerts un método llamado toJSON() que devuelve la instancia de esa clase a JSON.
Para esto uso la librería Gson, por si acaso les dejo el código también.
Saludos
private void requestAlertsToDelete(int[] alerts) { Alerts alertsRequest = Alerts.getAlertsRequest( SessionManager.getAuth(getActivity()), new int[]{}, alerts); PersistableBundle bundle = new PersistableBundle(); bundle.putString(Constants.INSTANCE.getREQUEST_PARAMS(), alertsRequest.toJSON()); JobScheduler jobScheduler = (JobScheduler) getActivity()
.getSystemService(Context.JOB_SCHEDULER_SERVICE); JobInfo jobInfo = new JobInfo.Builder(0, new ComponentName(getActivity(), AlertJobService.class)) .setExtras(bundle) .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) .build(); if (jobScheduler != null) { jobScheduler.schedule(jobInfo); }
Esta clase acepta tipos básicos, enteros, cadenas de caracteres y algunos otros, pero no Parcelables, por lo tanto lo que hice fue crear en mi clase Alerts un método llamado toJSON() que devuelve la instancia de esa clase a JSON.
Para esto uso la librería Gson, por si acaso les dejo el código también.
public String toJSON() { return gs.toJson(this, Alerts.class); }
la variable gs está definida de forma global de la siguiente manera.public final Gson gs = new GsonBuilder().serializeNulls() .disableHtmlEscaping() .create();
Saludos
Comentarios
Publicar un comentario
Prove yourself!