2016-06-02 14 views
1

Ich drücke backbutton, um die Aktivität zu beenden. Es ruft ondestroy. Und geht nach Hause. Aber immer noch, danach kann ich im Android-Studio sehen, es ist immer noch aktiv.Android nach Ondestroy, kann immer noch Anwendung

Ich sehe

Android monitor 

und monitors Registerkarte.

free 3 
allocated 27 mb 

Mein Code für OnDestroy und Backbutton:

public void onBackPressed() { 
     Log.d(TAG, "mainactivitymp3 backbuttpn"); 

     final Context ctx = this; 
     AlertDialog.Builder builder = new AlertDialog.Builder(ctx); 
     builder.setCancelable(true); 
     builder.setTitle("end app?"); 
     //builder.setMessage("yes?"); 
     builder.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
      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(); 
      } 
     }); 
     builder.setNegativeButton("no", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       return; 
      } 
     }); 
     builder.setOnCancelListener(new DialogInterface.OnCancelListener() { 
      public void onCancel(DialogInterface dialog) { 
       return; 
      } 
     }); 
     builder.show(); 
    } 

    @Override 
    protected void onDestroy() { 
     Log.d(TAG, "mainactivityondestry"); 
     super.onDestroy(); 

     if(mMediaPlayer!=null) { 
      Log.d(TAG, "mainactivityondestry mediaisplay not null"); 
      mMediaPlayer.release(); 
     } 
     else{ 
      Log.d(TAG, "mainactivityonondestry mediaisplayisplaying"+mMediaPlayer.isPlaying()); 
     } 
    } 

    @Override 
    protected void onStop() { 
     Log.d(TAG, "mainactivityonstop"); 
     super.onStop(); 

     if(mMediaPlayer!=null) { 
      Log.d(TAG, "mainactivityonstop mediaisplay not null"); 
      mMediaPlayer.stop(); 
      // mMediaPlayer.release();//i usethis ondestroy 
     } 
     else{ 
      Log.d(TAG, "mainactivityonstop mediaisplayisplaying"+mMediaPlayer.isPlaying()); 
     } 
    } 

I Samsung Tablet haben. Wenn ich die linke Taste in der Nähe von zu Hause drücke, werden Apps angezeigt, die ich kürzlich verwendet habe oder welche noch immer gespeichert sind. Ich weiß nicht, was wahr ist.

Mindestens 20 Minuten vorbei, aber immer noch kann ich meine Tätigkeit dort sehen.

Das sind Protokolle: (für 20 Minuten, nachdem ich nach Hause ging, kein Protokoll von meinem Tag, aber für die ausführlichen, es geht immer auf)

mainactivitymp3 backbuttpn 
mainactivityonpause*********** 
mainactivityonpause mediaisplay not null isplaying 
mainactivityonpause ends*********** 
mainactivityonstop 
mainactivityonstop mediaisplay not null 
mainactivityondestry 
mainactivityondestry mediaisplay not null 

Wenn ich meine Anwendung von Tablet-Taste Menü wählen Es beginnt mit oncreate. Möglicherweise als ob ich es das erste Mal laufen würde.

Antwort

1

Es ist, weil Ihre Anwendung nicht getötet wird. Es wird immer noch im Android OS Speicher sein.

Was Sie vielleicht tun müssen, ist

@Override 
public void onBackPressed() { 

    android.os.Process.killProcess(android.os.Process.myPid()); 
    // This above line close correctly 
} 
+0

Ja genau ich die Prozess-ID überprüft haben, nach Drücken der Taste zurück. "Pid ist" + android.os.Process.myPid(). Ein neuer Prozess wird bei jedem Start erstellt. – vgokul129