2016-10-04 4 views
1

Ich versuche, meine Anwendung zu verlassen, wenn ich die Zurück-Taste berühre. Ich habe den üblichen Code verwendet, aber es nimmt nur die App vom Bildschirm und wenn ich auf das quadratische Feld unten rechts klicke (auch sagen, wie es heißt), kann ich immer noch sehen, die App läuft den Hintergrund, den ich entfernen möchte Es ist komplett aus dem System. Ich habe versucht, sie alle fertig(); und System.exit (0); Sie geben die App einfach vom Hintergrund in den Hintergrund. Ich möchte es vollständig aus dem System entfernen.Android App Beenden auf Zurück-Taste

Der folgende Code verwende ich.

@Override 
public void onBackPressed() { 

     new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit") 
       .setMessage("Are you sure?") 
       .setPositiveButton("yes", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 

         Intent intent = new Intent(Intent.ACTION_MAIN); 
         intent.addCategory(Intent.CATEGORY_HOME); 
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         startActivity(intent); 
         finish(); 
         System.exit(0); 
        } 
       }).setNegativeButton("no", null).show(); 

    } 
+1

werfen Sie einen Blick auf die ähnliche Frage http://stackoverflow.com/questions/6330200/how-to-quit-android-application-programmatically –

+0

diese geben die gleichen Antworten wie finish(); oder System.exit (0); Es funktioniert nicht, es dauert nur meine App im Hintergrund. Dann muss ich es manuell aus den Hintergrund-Apps entfernen, indem ich es nach rechts wische. –

+0

Ya ich habe versucht, sie alle fertig(); und System.exit (0); Sie geben die App einfach vom Hintergrund in den Hintergrund. Ich möchte es vollständig aus dem System entfernen. @VolodymyrKhodonovych –

Antwort

1

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); löscht vorherige Aktivitäten. Damit ist der Anruf finish() nicht erforderlich.

Und System.exit(0); wird in Java verwendet, nicht Android, also nicht mehr verwenden. Verwenden Sie finish() oder getActivity().finish() in Fragment, um aktuelle Aktivität zu schließen.

Update:

Wenn Sie die App, um töten wollen nicht mehr im Hintergrund nicht ausführen, müssen Sie so etwas wie dieses

ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE); am.killBackgroundProcesses(packageName);

Wo Paket ist Ihr App-Paket tun. Und Sie müssen die Erlaubnis geben <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />. Ich denke, dass dies auf M angefordert werden muss. Versuchen Sie es.

+0

funktioniert nicht nur von Vordergrund zu Hintergrund. –

+0

Bitte entfernen Sie Ihre anderen Flaggen. –

+0

erledigt ............. –

0

wenn Sie die App aus der Hauptaktivität wollen verlassen, können Sie einfach schreiben:

finish(); 

oder für den Austritt der App von anderen Aktivitäten, Sie sollten in anderen Aktivitäten wie dies tun:

//in other activity onBackPressed()  
    Intent intent = new Intent(OtherActivity.this, MainActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.putExtra("EXIT", true); 
    startActivity(intent); 

und schreiben diese in onCreate() für MainActivity

if (getIntent().getBooleanExtra("EXIT", false)) { 
     finish(); 
     System.exit(0); 
    } 

das ist Arbeit für mich und ich hoffe, es funktioniert auch für Sie.

+0

Verwenden Sie 'System.exit (0)' nicht. Einfach 'finish()'. Das ist Android, nicht Java. –

+0

Ich mag das immer, das ist alles korrekt ... –

+0

finish() - beendet die Aktivität, von der es aufgerufen wird, und Sie sehen die vorherige Aktivität. System.exit (0) - startet die App mit einer Aktivität weniger auf dem Stapel neu. Wenn Sie ActivityB von ActivityA aufgerufen haben und System.exit (0) in ActivityB aufgerufen wurde, wird die Anwendung sofort beendet und sofort mit nur einer Aktivität gestartet. ActivityA –

Verwandte Themen