Berbagai jawaban dan catatan mengklaim bahwa finish () dapat melewati onPause () dan onStop () dan langsung menjalankan onDestroy (). Agar adil, dokumentasi Android tentang ini ( http://developer.android.com/reference/android/app/Activity.html ) mencatat "Aktivitas sedang selesai atau dihancurkan oleh sistem" yang cukup ambigu tetapi mungkin menyarankan bahwa finish () dapat melompat ke onDestroy ().
JavaDoc on finish () juga mengecewakan ( http://developer.android.com/reference/android/app/Activity.html#finish () ) dan tidak benar-benar mencatat metode apa yang disebut sebagai respons terhadap penyelesaian. ().
Jadi saya menulis aplikasi mini ini di bawah ini yang mencatat setiap negara bagian saat masuk. Ini termasuk tombol yang memanggil selesai () - sehingga Anda dapat melihat log metode mana yang dipecat. Eksperimen ini menyarankan bahwa finish () memang juga memanggil onPause () dan onStop (). Ini adalah output yang saya dapatkan:
2170-2170/? D/LIFECYCLE_DEMO﹕ INSIDE: onCreate
2170-2170/? D/LIFECYCLE_DEMO﹕ INSIDE: onStart
2170-2170/? D/LIFECYCLE_DEMO﹕ INSIDE: onResume
2170-2170/? D/LIFECYCLE_DEMO﹕ User just clicked button to initiate finish()
2170-2170/? D/LIFECYCLE_DEMO﹕ INSIDE: onPause
2170-2170/? D/LIFECYCLE_DEMO﹕ INSIDE: onStop
2170-2170/? D/LIFECYCLE_DEMO﹕ INSIDE: onDestroy
package com.mvvg.apps.lifecycle;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class AndroidLifecycle extends Activity {
private static final String TAG = "LIFECYCLE_DEMO";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "INSIDE: onCreate");
setContentView(R.layout.activity_main);
LinearLayout layout = (LinearLayout) findViewById(R.id.myId);
Button button = new Button(this);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(AndroidLifecycle.this, "Initiating finish()",
Toast.LENGTH_SHORT).show();
Log.d(TAG, "User just clicked button to initiate finish()");
finish();
}
});
layout.addView(button);
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "INSIDE: onStart");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "INSIDE: onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "INSIDE: onDestroy");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "INSIDE: onPause");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "INSIDE: onResume");
}
}