Her şeyden önce, bu yaklaşım min Api 16 gerektirir.
Bu sorunu daha geniş bir şekilde çözmek için bu çözümü 3 bölüme ayıracağım.
1. Bir Etkinlikteki uygulamadan çıkmak istiyorsanız bu kod snippet'ini kullanın:
if(Build.VERSION.SDK_INT>=16 && Build.VERSION.SDK_INT<21){
finishAffinity();
} else if(Build.VERSION.SDK_INT>=21){
finishAndRemoveTask();
}
2. Uygulamaya, Etkinlik erişimi olan bir Etkinlik dışı sınıfta çıkmak istiyorsanız, bu kod snippet'ini kullanın:
if(Build.VERSION.SDK_INT>=16 && Build.VERSION.SDK_INT<21){
getActivity().finishAffinity();
} else if(Build.VERSION.SDK_INT>=21){
getActivity().finishAndRemoveTask();
}
3. Uygulamadan bir Activity olmayan sınıfta çıkmak ve Service gibi Activity'ye erişemiyorsanız BroadcastReceiver kullanmanızı öneririm. Bu yaklaşımı projenizdeki tüm Etkinliklerinize ekleyebilirsiniz.
LocalBroadcastManager ve BroadcastReceiver örnek değişkenleri oluşturun. İsterseniz getPackageName () + ". Closeapp" ifadesini değiştirebilirsiniz.
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();
}
}
}
};
Bunları onCreate () yöntemine ekleyin.
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction(getPackageName()+".closeapp");
mLocalBroadcastManager.registerReceiver(mBroadcastReceiver, mIntentFilter);
Ayrıca, onDestroy () yönteminde unregister alıcısını çağırmayı unutmayın
mLocalBroadcastManager.unregisterReceiver(mBroadcastReceiver);
Uygulamadan çıkmak için, hizmeti genişleten PlayService sınıfımda kullandığım LocalBroadcastManager'ı kullanarak yayın göndermeniz gerekir.
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(PlayService.this);
localBroadcastManager.sendBroadcast(new Intent(getPackageName() + ".closeapp"));