एक गतिविधि एक परिणाम रिसीवर को तुरंत चालू करती है और रिसीव रिजल्ट पर ओवरराइड करती है। गतिविधि तब एक इरादा सेवा के लिए एक इरादा भेजती है और परिणामस्वरूप रिसीवर को अतिरिक्त के रूप में शामिल करती है। एक बार जब IntentService प्रसंस्करण समाप्त हो जाए तो यह परिणाम संदेश रिसीवर पर वापस भेजता है और इसे रीसीव रिजल्ट में संसाधित करता है।मृत परिणाम का जवाब देने वाले इंटेंट सेवा
समस्या यह है कि यदि उपयोगकर्ता गतिविधि से दूर निकलता है तो परिणाम अभी भी परिणाम रिसीवर पर वापस भेजा जाता है जो सभी प्रकार के मुद्दों का कारण बनता है। क्या इस व्यवहार को रोकने का कोई तरीका नहीं है? मैंने गतिविधि के ऑनस्ट्रोय() में IntentService को रोकने का प्रयास किया है लेकिन परिणाम अभी भी वापस भेजा गया है।
यहाँ एक नमूना गतिविधि
public class Foo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = new Intent(this, SampleIntentService.class);
i.putExtra("receiver", mReceiver);
startService(i);
}
@Override
public void onDestroy() {
stopService(new Intent(this, SampleIntentService.class));
mReceiver = null;
super.onDestroy();
}
ResultReceiver mReceiver = new ResultReceiver(new Handler()) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
// Handle response from IntentService here
}
};
}
है एक नमूना IntentService
public class SampleIntentService extends IntentService {
public SampleIntentService() {
super(SampleIntentService.class.getName());
}
@Override
protected void onHandleIntent(Intent intent) {
ResultReceiver rec = intent.getParcelableExtra("receiver");
if (rec != null) {
rec.send(200, null);
}
}
}
अच्छा समाधान:
तब मेरे गतिविधि में मैं निम्न कार्य करें ! मैंने आपकी गतिविधि के बजाय एक टुकड़े में एक ही दृष्टिकोण का उपयोग किया है – moondroid