finish()和Activity的生命周期

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

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

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

  • runOnUiThread在片段中
  • 如何对Android中的活动强制执行自定义权限?
  • 如何在活动之间传递drawable
  • 我应该如何通过活动链转发Intent参数?
  • 为什么在我的Activity启动后,onStop被调用了?
  • 解锁设备后,Android Activity重新启动
  • 在Android中将列表传递给另一个活动
  • 片段活动捕获onKeyDown并在片段中使用
  • 你是对的。 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"); } }