• Activity的生命周期和启动模式


    Android开发最吸引人的魅力在于随随便便拖几个控件,跑一下代码,就能看见在页面上面显示的效果。其中Activity的强大就体现出来了。楼主以前做Web开发,被2000多行的Js代码弄的头昏眼花。后来偶尔一次机会,看见Android拖控件到显示的视频,被吸引着入了门,走上了Android的不归路。做Android开发的这几年,本着能抄代码就不自己动手的精神,走了不少弯路。现在配合多个学习书籍,总结经验,理解原理性的东西,方便下次抄袭(^_^)。

    废话不多说,上Activity的生命周期图(这个在面试的时候经常会被问到哎,真不知道有什么可以问的

    Activity的生命周期

    图片原地址(http://cs.szpt.edu.cn/android/guide/components/activities.html)

    Activity从创建到销毁,正常经过的生命流程就是onCreate->onStart->onResume->onPause->onStop->onStop->onDestroy。

    但是筒子们在开发的时候,偶会会见到不走寻常路的。

    生命周期分析

    onCreate:Activity正在被创建,是生命周期的第一个方法,一般初始化的工作都是在这里完成的,比如setContentView加载layout、getIntent获取上个页面传递过来的数据、findViewById、setListener等

    onRestart:Activity在重启。一般情况下当应用程序从后台程序变成前台程序的时候,会执行onRestart方法。

    onStart:Activity正在启动,Activity处在系统后台可见,用户还没法操作界面上的元素。

    onResume:Activity可见了,并且出现在前台。与onStart的区别在于:onStart的时候,Activity处在后台,onResume的时候Activity才显示到前台。

    onPause:Activity处在暂停状态,用户没法操作。

    onStop:Activity即将停止,可以做微量的回收操作,但不能够太耗时。

    onDestroy:Activity即将销毁,可以做回收工作和资源的释放。一般把注册的广播接受者取消注册unregisterReceiver、handler.removeMessages、Timer的cancel等。

    测试代码

    package com.chunjiangchao.demo;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    
    public class MainActivity extends Activity {
        private static final String tag = "MainActivity";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Log.i(tag, "onCreate");
        }
        @Override
        protected void onStart() {
            super.onStart();
            Log.i(tag, "onStart");
        }
        @Override
        protected void onRestart() {
            super.onRestart();
            Log.i(tag, "onRestart");
        }
        @Override
        protected void onResume() {
            super.onResume();
            Log.i(tag, "onResume");
        }
        @Override
        protected void onPause() {
            super.onPause();
            Log.i(tag, "onPause");
        }
        @Override
        protected void onStop() {
            super.onStop();
            Log.i(tag, "onStop");
        }
        @Override
        protected void onDestroy() {
            super.onDestroy();
            Log.i(tag, "onDestroy");
        }
        
    
    
    }

     AndroidManifest.xml中的配置

            <activity
                android:name="com.chunjiangchao.demo.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    View Code

     正常流程测试:

    启动Activity,然后点击后退键销毁,生命周期如下:

    启动Activity后,点击Home键

    旋转屏幕的生命周期

    未完待续(还是夜晚写吧,上午真的造不出来啊)

  • 相关阅读:
    使用docker部署Asp.net core web应用程序
    Docker 常用命令参考
    CentOS 系列安装 Docker
    在IIS上部署你的ASP.NET Core项目
    【POJ1742】Coins
    【CH5105】Cookies
    【NOIP2008】传纸条
    【CH5102】Mobile Service
    【CH1401】兔子与兔子
    【CH5101】LCIS
  • 原文地址:https://www.cnblogs.com/chun-jiang-chao-de-gu-shi/p/5438361.html
Copyright © 2020-2023  润新知