it-swarm.com.de

so schließen Sie die Android-App vollständig

Ich habe eine Android-Anwendung mit einer Abmeldeoption in onCreateOptionsMenu erstellt. Die Abmeldung funktioniert einwandfrei, aber wenn ich die Zurück-Taste erneut drücke, gelangen Sie zur vorherigen Aktivität. Wenn sie einen Nullwert erhält, wird der Login-Bildschirm angezeigt. Nun erscheint mein Anmeldebildschirm immer wieder. Ich möchte die App vollständig schließen, wenn ich die Zurück-Taste drücke, weiß aber nicht wie. 

Hier ist mein Code für das Drücken der Zurück-Taste im Anmeldebildschirm:

@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
        .setTitle("BidNEMO")
        .setMessage("Are you sure you want to exit?")
        .setNegativeButton(Android.R.string.no, null)
        .setPositiveButton(Android.R.string.yes, new OnClickListener() {
         public void onClick(DialogInterface arg0, int arg1) {
         Main.super.onBackPressed();
         finish();
         }
         }).create().show();
     }

bitte hilf guyss ..

15
Brett

Um Quit Application auf Button zu klicken, verwenden Sie diesen Code:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);

Versuch es.. 

Um die komplette App zu beenden und sie aus der Liste Runningapp zu entfernen, töten Sie die App über ihre pid (ihr fieser).

int pid = Android.os.Process.myPid();
Android.os.Process.killProcess(pid);
50
ryderz8

Wenn Sie die Anwendung vollständig schließen möchten, sollten Sie finishAffinity(); anstelle von finish() ..__ verwenden. Dadurch werden alle Aktivitäten gelöscht, die zuvor von einer Anwendung geöffnet wurden.

14
SachiN Ware.

Für Xamarin-Benutzer:

int pid = Android.OS.Process.MyPid();
Android.OS.Process.KillProcess(pid);

setzen Sie es in Ihre OnDestroy()-Funktion.

Bearbeiten :

Nach eingehender Untersuchung fand ich heraus, dass selbst der oben genannte Code, den ich geschrieben habe, die App nicht vollständig "tötet". Nach vielen Code-Tryouts gelang es mir schließlich, etwas herauszufinden: "Finish" überschreibt die Funktionen mit diesem Code:

public override void Finish()
    {
        if (Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
        {
            base.FinishAndRemoveTask();
        }
        else
        {
            base.Finish();
        }
    }

dies ist die einzige Lösung für diese Frage!

5
Roy Doron

Um eine Aktivität zu beenden, verwende ich diesen Code:

public void appExit () {
    this.finish();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}  //close method

oder Prozess mit diesem Code beenden:

int pid = Android.os.Process.myPid();
Android.os.Process.killProcess(pid);
5
chiru

Für API 21 und höher

finishAndRemoveTask()

Sie können dies aufrufen, um die App vollständig zu schließen. Alle Aktivitäten werden finish() und die App wird aus der Aufgabenliste entfernt.

3
Mick Ashton

Auch wenn es in Ordnung aussieht, wird der Tötungsprozess in Zukunft Kopfschmerzen verursachen. Sie können dies durch folgenden Anwendungsfall sicherstellen:

  1. rufen Sie mehrere Aktivitäten auf, um den Aktivitätenstapel aufzufüllen 
  2. rufen Sie Android.os.Process.killProcess (pid) an;
  3. Öffnen Sie Ihre Anwendung

BEOBACHTET: Ihre Anwendung wird nicht auf inkonsistente Weise aus der Hauptaktivität geöffnet. Dies liegt daran, dass Android das Abstürzen eines Prozesses wie Absturz in Betracht zieht. 

Nähere Informationen finden Sie hier: Wird das Beenden einer Anwendung missbilligt?

0
Pavel Polushkin
Android.os.Process.killProcess(Android.os.Process.myUid());

Ich denke, das ist besser ... Wie sieht es aus?

0
AlienKilleR