finish()和Activity的生命周期

我正在学习一个类的Android编程,我有一个关于finish()如何适应Activity生命周期的简单问题。

当你完成一个调用(),什么生命周期callback开始? 我认为它是onPause(),然后onStop()和onDestroy()。 它是否正确?

真的,我只是想确保它不会直接跳到o​​nDestroy()。

Solutions Collecting From Web of "finish()和Activity的生命周期"

你是对的。 onPause,onStop,onDestroy。

这里是文档。

是的,它不会跳到onDestroy()跳过onPause和onStop。

你也可能对onPostResume(),onPostPause(),onPostCreate(),onUserLeaveHint()等等感兴趣。这些在活动生命周期中没有列出

真的,我只是想确保它不会直接跳到o​​nDestroy()。 ???

没有!

但是当调用finish()导致activity生命周期中断时,会有一个例外 ,当你从onCreate()方法调用finish()时, 会立即调用onDestroy()方法

http://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)

分析这些问题和问题也可能是非常有趣的。 你可以例如在onPause()方法中设置一个debugging断点,并从这个angular度调查程序stream程。

还有一些打印输出可以给你一些有用的信息。

你可以写例如System.out.println(“method of name”+“called。”); 在你认为被称为你的活动的每个方法。 (覆盖例如onPause() ,调用super.onPause()并放置一个控制台打印出来,看看是否调用该方法。

在开发过程中,您将会学到很多关于Android系统的小调查。

创build一个新的Android应用程序,并将其放置在主要活动中。

然后查看输出的LogCat窗口(在Android的DDMS下)

build立你的应用程序相同 – 添加所有onPause,onStop等方法与输出到LogCat。

当你的程序运行时,你可以监视什么时候被调用。

 package com.app.myapp; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; public class MyApp extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); LinearLayout layout = new LinearLayout(this); Button exit = new Button(this); exit.setText("finish"); exit.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Log.v("MyApp", "finish"); finish(); } }); layout.addView(exit); setContentView(layout); Log.v("MyApp", "onCreate"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.v("MyApp", "onDestroy"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.v("MyApp", "onPause"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.v("MyApp", "onRestart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.v("MyApp", "onResume"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.v("MyApp", "onStart"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.v("MyApp", "onStop"); } }