विभिन्न उत्तर और नोट यह दावा कर रहे हैं कि फिनिश () ऑनपॉज़ () और ऑनस्पॉट () को छोड़ सकता है और सीधे ऑनडेस्ट्रॉय () को निष्पादित कर सकता है। निष्पक्ष होने के लिए, इस पर Android प्रलेखन ( http://developer.android.com/reference/android/app/Activity.html ) नोट्स "गतिविधि सिस्टम द्वारा खत्म या नष्ट हो रही है" जो बहुत अस्पष्ट है, लेकिन सुझाव दे सकता है कि खत्म () onDestroy () में कूद सकता है।
JavaDoc on फिनिश () समान रूप से निराशाजनक है ( http://developer.android.com/reference/android/app/Activity.html#finish () ) और वास्तव में नोट नहीं करता है कि क्या विधि (ओं) को समाप्त होने के जवाब में कहा जाता है ()।
इसलिए मैंने नीचे इस मिनी-ऐप को लिखा है जो प्रविष्टि पर प्रत्येक राज्य को लॉग करता है। इसमें एक बटन शामिल है जो कॉल को समाप्त करता है () - ताकि आप लॉग देख सकें कि किन तरीकों से निकाल दिया जाता है। इस प्रयोग ने सुझाव दिया कि फिनिश () वास्तव में ऑनपॉज़ () और ऑनस्पॉट () को कॉल करता है । यहाँ उत्पादन मुझे मिल रहा है:
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");
}
}