Android после уничтожения все еще может видеть приложение

Я нажимаю кнопку «Назад», чтобы завершить действие. Он вызывает ondestroy. И идет домой. Но все же, после этого я вижу в студии Android, что она все еще активна.

я смотрю на

Android monitor

и monitors вкладка.

free 3
allocated 27 mb

Мой код для ondestroy и кнопки возврата:

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());
        }
    }

У меня планшет самсунг. Когда я нажимаю левую кнопку рядом с домом, он показывает приложения, которые я недавно использовал или которые все еще хранятся в памяти. Я не знаю, что правда.

По крайней мере, прошло 20 минут, но я все еще вижу там свою активность.

Это логи:(уже 20 минут, после того, как я пошел домой, нет лога от моего тега, но для подробностей он продолжается)

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

Когда я выбираю свое приложение в меню кнопок планшета, оно начинается с oncreate. Возможно, как будто я запускаю его в первый раз.


person user6412889    schedule 02.06.2016    source источник


Ответы (1)


Это потому, что ваше приложение не убито. Он останется в памяти ОС Android.

Что вам, возможно, придется сделать, это

@Override 
public void onBackPressed() { 

    android.os.Process.killProcess(android.os.Process.myPid());
    // This above line close correctly 
} 
person Vinay Jayaram    schedule 02.06.2016
comment
Да, именно я проверил идентификатор процесса после нажатия кнопки «Назад». Pid + android.os.Process.myPid(). При каждом запуске создается новый процесс. - person vgokul129; 09.12.2017