सबसे पहले, इस दृष्टिकोण को न्यूनतम अपी 16 की आवश्यकता है।
मैं इस समस्या को अधिक व्यापक रूप से हल करने के लिए इस भाग को 3 भागों में विभाजित करूंगा।
1. यदि आप किसी गतिविधि में आवेदन छोड़ना चाहते हैं तो इस कोड स्निपेट का उपयोग करें:
if(Build.VERSION.SDK_INT>=16 && Build.VERSION.SDK_INT<21){
finishAffinity();
} else if(Build.VERSION.SDK_INT>=21){
finishAndRemoveTask();
}
2. यदि आप गैर-गतिविधि वर्ग में आवेदन को छोड़ना चाहते हैं जिसकी गतिविधि तक पहुँच है तो इस कोड का उपयोग करें स्निपेट:
if(Build.VERSION.SDK_INT>=16 && Build.VERSION.SDK_INT<21){
getActivity().finishAffinity();
} else if(Build.VERSION.SDK_INT>=21){
getActivity().finishAndRemoveTask();
}
3. यदि आप गैर-गतिविधि वर्ग में आवेदन छोड़ना चाहते हैं और सेवा तक पहुंच नहीं कर सकते हैं जैसे कि मैं आपको ब्रॉडकास्टसीवर का उपयोग करने की सलाह देता हूं। आप अपने प्रोजेक्ट में अपनी सभी गतिविधियों के लिए इस दृष्टिकोण को जोड़ सकते हैं।
LocalBroadcastManager और BroadcastReceiver उदाहरण चर बनाएँ। यदि आप चाहते हैं तो आप getPackageName () + "। बंद करें" को बदल सकते हैं।
LocalBroadcastManager mLocalBroadcastManager;
BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(getPackageName()+".closeapp")){
if(Build.VERSION.SDK_INT>=16 && Build.VERSION.SDK_INT<21){
finishAffinity();
} else if(Build.VERSION.SDK_INT>=21){
finishAndRemoveTask();
}
}
}
};
गतिविधि के onCreate () विधि में इन्हें जोड़ें।
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction(getPackageName()+".closeapp");
mLocalBroadcastManager.registerReceiver(mBroadcastReceiver, mIntentFilter);
इसके अलावा, OnDestroy () गतिविधि के तरीके पर अपंजीकृत रिसीवर को कॉल करना न भूलें
mLocalBroadcastManager.unregisterReceiver(mBroadcastReceiver);
पद छोड़ने के आवेदन के लिए, आपको लोकलब्रॉडकास्टमैनेजर का उपयोग करके प्रसारण भेजना होगा, जिसका उपयोग मैं अपने PlayService वर्ग में करता हूं जो सेवा प्रदान करता है।
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(PlayService.this);
localBroadcastManager.sendBroadcast(new Intent(getPackageName() + ".closeapp"));