Zuallererst erfordert dieser Ansatz mindestens Api 16.
Ich werde diese Lösung in drei Teile teilen, um dieses Problem weiter zu lösen.
1. Wenn Sie die Anwendung in einer Aktivität beenden möchten, verwenden Sie diesen Codeausschnitt:
if(Build.VERSION.SDK_INT>=16 && Build.VERSION.SDK_INT<21){
finishAffinity();
} else if(Build.VERSION.SDK_INT>=21){
finishAndRemoveTask();
}
2. Wenn Sie die Anwendung in einer Nicht-Aktivitätsklasse beenden möchten, die Zugriff auf Aktivität hat, verwenden Sie diesen Codeausschnitt:
if(Build.VERSION.SDK_INT>=16 && Build.VERSION.SDK_INT<21){
getActivity().finishAffinity();
} else if(Build.VERSION.SDK_INT>=21){
getActivity().finishAndRemoveTask();
}
3. Wenn Sie die Anwendung in einer Nicht-Aktivitätsklasse beenden möchten und nicht auf Aktivitäten wie Service zugreifen können, empfehle ich Ihnen, BroadcastReceiver zu verwenden. Sie können diesen Ansatz allen Ihren Aktivitäten in Ihrem Projekt hinzufügen.
Erstellen Sie die Instanzvariablen LocalBroadcastManager und BroadcastReceiver. Sie können getPackageName () + ". Closeapp" ersetzen, wenn Sie möchten.
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();
}
}
}
};
Fügen Sie diese der onCreate () -Methode hinzu.
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction(getPackageName()+".closeapp");
mLocalBroadcastManager.registerReceiver(mBroadcastReceiver, mIntentFilter);
Vergessen Sie auch nicht, den Empfänger bei der onDestroy () - Aktivitätsmethode abzumelden
mLocalBroadcastManager.unregisterReceiver(mBroadcastReceiver);
Zum Beenden der Anwendung müssen Sie Broadcasts mit LocalBroadcastManager senden, den ich in meiner PlayService-Klasse verwende, die Service erweitert.
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(PlayService.this);
localBroadcastManager.sendBroadcast(new Intent(getPackageName() + ".closeapp"));