Pertama-tama, pendekatan ini membutuhkan min Api 16.
Saya akan membagi solusi ini menjadi 3 bagian untuk menyelesaikan masalah ini secara lebih luas.
1. Jika Anda ingin keluar dari aplikasi dalam suatu Aktivitas, gunakan snipet kode ini:
if(Build.VERSION.SDK_INT>=16 && Build.VERSION.SDK_INT<21){
finishAffinity();
} else if(Build.VERSION.SDK_INT>=21){
finishAndRemoveTask();
}
2. Jika Anda ingin keluar dari aplikasi dalam kelas non Activity yang memiliki akses ke Activity, gunakan snipet kode ini:
if(Build.VERSION.SDK_INT>=16 && Build.VERSION.SDK_INT<21){
getActivity().finishAffinity();
} else if(Build.VERSION.SDK_INT>=21){
getActivity().finishAndRemoveTask();
}
3. Jika Anda ingin keluar dari aplikasi dalam kelas non Activity dan tidak dapat mengakses Aktivitas seperti Layanan, saya sarankan Anda untuk menggunakan BroadcastReceiver. Anda dapat menambahkan pendekatan ini ke semua Kegiatan Anda di proyek Anda.
Buat variabel instance LocalBroadcastManager dan BroadcastReceiver. Anda dapat mengganti getPackageName () + ". Closeapp" jika mau.
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();
}
}
}
};
Tambahkan ini ke metode Kegiatan onCreate ().
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction(getPackageName()+".closeapp");
mLocalBroadcastManager.registerReceiver(mBroadcastReceiver, mIntentFilter);
Juga, jangan lupa untuk memanggil penerima yang tidak terdaftar di metode Aktivitas onDestroy ()
mLocalBroadcastManager.unregisterReceiver(mBroadcastReceiver);
Untuk keluar dari aplikasi, Anda harus mengirim siaran menggunakan LocalBroadcastManager yang saya gunakan di kelas PlayService saya yang memperluas Layanan.
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(PlayService.this);
localBroadcastManager.sendBroadcast(new Intent(getPackageName() + ".closeapp"));