zoukankan      html  css  js  c++  java
  • 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键

    旋转屏幕的生命周期

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

  • 相关阅读:
    Virtual Drive Manager V1.3.2(小巧实用的虚拟光驱)绿色版
    WimTool(Wim映像处理工具) V1.30.2011.501 免费绿色版
    WinHex V18.7(16进制编辑器) 多国语言绿色版
    WinSnap屏幕截图 V4.5.6 官方最新版
    Wsyscheck(系统检测维护工具) v1.68.33绿色版
    XueTr 0.45 (手工杀毒辅助工具) 绿色版
    Colorful(Folders星语多彩文件夹) v1.7绿色版
    飞雪桌面日历软件 V8.6 免费绿色版
    Notepad++ V6.9.0 中文绿色便携版
    屏幕尺子(电脑尺子) 1.0 免费绿色版
  • 原文地址:https://www.cnblogs.com/chun-jiang-chao-de-gu-shi/p/5438361.html
Copyright © 2011-2022 走看看