zoukankan      html  css  js  c++  java
  • 深入Activity生命周期(二)

      下面以Demo来帮助理解Activity生命周期,

      布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView  
        android:id="@+id/tv"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="so many people."
        />
        <EditText 
        android:id="@+id/et"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:hint="hello,world"
        />
    </LinearLayout>

    只显示一个TextView和一个EditView,
    Activity代码如下:

    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class AndroidOrientationtestActivity extends Activity 
    {
        EditText et;
        TextView tv;
        
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            initUI();
            Log.i("my", "onCreate---");
        }
    
        private void initUI()
        {
            et = (EditText)findViewById(R.id.et);
            //打印控件的地址,对比切屏前的地址是否为同一个
            Log.i("my", "et="+et.toString());
            tv = (TextView)findViewById(R.id.tv);
          //打印控件的地址,对比切屏前的地址是否为同一个
            Log.i("my", "tv="+tv.toString());
        }
        
        @Override
        protected void onRestart()
        {
            // TODO Auto-generated method stub
            super.onRestart();
            Log.i("my", "onRestart---");
        }
    
    
        @Override
        protected void onStart()
        {
            // TODO Auto-generated method stub
            super.onStart();
            Log.i("my", "onStart---");
        }
    
    
        @Override
        protected void onResume()
        {
            // TODO Auto-generated method stub
            super.onResume();
            Log.i("my", "onResume---");
        }
    
    
        @Override
        protected void onPause()
        {
            // TODO Auto-generated method stub
            super.onPause();
            Log.i("my", "onPause---");
        }
    
        @Override
        protected void onStop()
        {
            // TODO Auto-generated method stub
            super.onStop();
            Log.i("my", "onStop---");
        }
    
        @Override
        protected void onDestroy()
        {
            // TODO Auto-generated method stub
            super.onDestroy();
            Log.i("my", "onDestroy---");
        }
        
    }

    当启动Activity界面的时候,Log如下:

    07-30 09:54:26.793: INFO/my(833): et=android.widget.EditText@4051ab70
    07-30 09:54:26.793: INFO/my(833): tv=android.widget.TextView@4051a428
    07-30 09:54:26.813: INFO/my(833): onCreate---
    07-30 09:54:26.813: INFO/my(833): onStart---
    07-30 09:54:26.813: INFO/my(833): onResume---

    可以看到首先启动的是onCreate(),然后是onStart(),然后是onResume(),看得到有了界面。
    当按下home键的时候,log如下:

    07-30 09:54:26.793: INFO/my(833): et=android.widget.EditText@4051ab70
    07-30 09:54:26.793: INFO/my(833): tv=android.widget.TextView@4051a428
    07-30 09:54:26.813: INFO/my(833): onCreate---
    07-30 09:54:26.813: INFO/my(833): onStart---
    07-30 09:54:26.813: INFO/my(833): onResume---
    07-30 09:56:31.183: INFO/my(833): onPause---
    07-30 09:56:32.018: INFO/my(833): onStop---

    可以看到多了onPause(),以及onStop(),

    再次按下home键,切回去Activity,Log如下:

    07-30 09:54:26.793: INFO/my(833): et=android.widget.EditText@4051ab70
    07-30 09:54:26.793: INFO/my(833): tv=android.widget.TextView@4051a428
    07-30 09:54:26.813: INFO/my(833): onCreate---
    07-30 09:54:26.813: INFO/my(833): onStart---
    07-30 09:54:26.813: INFO/my(833): onResume---
    07-30 09:56:31.183: INFO/my(833): onPause---
    07-30 09:56:32.018: INFO/my(833): onStop---
    07-30 09:57:49.303: INFO/my(833): onRestart---
    07-30 09:57:49.303: INFO/my(833): onStart---
    07-30 09:57:49.303: INFO/my(833): onResume---

    在这里执行了onRestart(),onStart(),onResume()方法。
    这里因为系统决定回收Activity,这里无法模拟当Activity被停止,然后被回收以后的状态,但是生命周期与新启动一个activity是一样的。

    如果这时候按下call键,则会弹出对话框,这时候会局部挡住当前的Activity,然后再按返回键,log如下:

    07-30 09:54:26.793: INFO/my(833): et=android.widget.EditText@4051ab70
    07-30 09:54:26.793: INFO/my(833): tv=android.widget.TextView@4051a428
    07-30 09:54:26.813: INFO/my(833): onCreate---
    07-30 09:54:26.813: INFO/my(833): onStart---
    07-30 09:54:26.813: INFO/my(833): onResume---
    07-30 09:56:31.183: INFO/my(833): onPause---
    07-30 09:56:32.018: INFO/my(833): onStop---
    07-30 09:57:49.303: INFO/my(833): onRestart---
    07-30 09:57:49.303: INFO/my(833): onStart---
    07-30 09:57:49.303: INFO/my(833): onResume---
    07-30 10:01:20.093: INFO/my(833): onPause---
    07-30 10:01:32.574: INFO/my(833): onResume---

    当对话框挡住activity时,调用了onPause,按下返回键时,重新onResume().

  • 相关阅读:
    Beta阶段DAY1
    Beta阶段DAY2
    Beta阶段冲刺前准备
    Beta阶段Scrum 冲刺博客合集
    alpha阶段项目复审
    网络15软工个人作业5——软件工程总结
    软工网络15个人作业4——alpha阶段个人总结
    软件工程网络15个人作业3 (201521123051 谢庆圆)
    软件工程网络15专业结对编程
    软工网络15个人阅读作业2 (201521123051 谢庆圆)
  • 原文地址:https://www.cnblogs.com/xilinch/p/2615711.html
Copyright © 2011-2022 走看看