मैं अपने ऐप में Androids new JobScheduler का उपयोग करना चाहता हूं लेकिन अभी मुझे नहीं पता कि मेरी ऑब्जेक्ट को कैसे पास किया जाए जिसमें डेटा (byte
सरणी) शामिल है जिसे किसी नौकरी से नेटवर्क के माध्यम से भेजा जाना चाहिए। मैंने एक उत्तर खोजा लेकिन अब तक कोई भी मुझे डरता नहीं है।एंड्रॉइड जॉबशेड्यूलिंग - मुझे अपने काम पर ऑब्जेक्ट पास करने की ज़रूरत है लेकिन कैसे?
मैं एक JobService है:
public class MyJob extends JobService {
@Override
public boolean onStartJob(JobParameters jobParameters) {
new JobTask(this).execute(jobParameters);
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
private static class JobTask extends AsyncTask<JobParameters, Void, JobParameters> {
private final JobService jobService;
public JobTask(JobService jobService) {
this.jobService = jobService;
}
@Override
protected JobParameters doInBackground(JobParameters... params) {
AnotherClass.post(myObject); // where does myObject come from?
return params[0];
}
@Override
protected void onPostExecute(JobParameters jobParameters) {
jobService.jobFinished(jobParameters, false);
}
}
}
... इस तरह एक नौकरी निर्माण कर रहा हूँ:
PersistableBundle bundle = new PersistableBundle();
JobInfo job = new JobInfo.Builder(jobID, new ComponentName(context, AshServiceJob.class))
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
.setPersisted(true)
.setExtras(bundle) // could bundle somehow contain myObject?
.build();
OtherClass.addJobInBackground (काम);
... और काम का समय निर्धारण कर रहा हूँ:
public void addJobInBackground(final JobInfo job) {
JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(job);
}
Sooo ... मैं सीधे सही MyJob में किसी भी तरीकों कॉल नहीं कर सकते? मैंने सोचा कि मैं नौकरी पर अपना ऑब्जेक्ट पास करने के लिए .setExtras(bundle)
का उपयोग कर सकता हूं, लेकिन जैसा कि मैंने पाया है कि आप केवल PersistableBundle
का उपयोग कर सकते हैं जो बंडल जैसे क्रमबद्ध ऑब्जेक्ट नहीं लेगा। कुंजी और मूल्य सेट करना काम नहीं करता है, क्योंकि आप केवल booleans, ints, strings
इत्यादि डाल सकते हैं, लेकिन byte[]
नहीं, जो मुझे चाहिए।
क्या किसी को कोई विचार है? मैं काफी अटक गया हूँ।
अग्रिम धन्यवाद, एक मीटर
पुनश्च: माफ करना, सही कोड-टैग करता है, तो मैं शायद का उपयोग नहीं किया।
यह गुजर के लिए विशेष रूप बंधी नहीं है 'जॉबइन्फो' के लिए ऑब्जेक्ट्स। यह किसी भी दो एंड्रॉइड घटकों के बीच वस्तुओं को पारित करने के लिए 'इरादा' का उपयोग करने के बारे में है, ** उपलब्ध विकल्पों पर विस्तार से चर्चा की गई है [https://stackoverflow.com/q/2139134/2666212) **। – Mike