zoukankan      html  css  js  c++  java
  • Andoid activity 生命周期

      今天介绍一下Android中最常用的组件activity的生命周期。当activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理。当前活动的Activity处于栈顶。随着不同应用的运行,每个Activity都有可能从活动状态转入非活动状态,也可能从非活动状态转入活动状态。

      归纳起来Activity大致会经过如下四个状态。

      活动状态:当前Activity位于栈顶,用户可见,可以获得焦点。

      暂停状态:其他Activity处于栈顶,该Activity依然可见,只是不能获得焦点。

      停止状态:该Activity不可见,失去焦点。

      销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束。

      下图显示了Activity生命周期及相关回调方法。

     

      从图中可以看出,在Activity的生命周期中,如下方法会被系统回调。

      onCreate:创建Activity时被回调。

      onStart:启动Activity时被回调。

      onRestart:重新启动Activity时被回调。

      onResume:恢复Activity时被回调。

      onPause:暂停Activity时被回调。

      onStop:停止Activity时被回调。

      onDestroy:销毁Activity时被回调。

      下面演示一下,演示代码:

    public class Lifecycle extends Activity
    {
        final String TAG = "--CrazyIt--";
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //输出日志
            Log.d(TAG , "-------onCreate------");        
            Button bn = (Button)findViewById(R.id.bn);
            //为bn按钮绑定事件监听器
            bn.setOnClickListener(new OnClickListener()
            {
                @Override
                public void onClick(View source)
                {
                    //结束该Activity
                    Lifecycle.this.finish();
                }            
            });
        }
        @Override
        public void onStart() 
        {
            super.onStart();
            //输出日志
            Log.d(TAG , "-------onStart------");
        }
        @Override
        public void onRestart() 
        {
            super.onRestart();
            //输出日志
            Log.d(TAG , "-------onRestart------");        
        }
        @Override
        public void onResume() 
        {
            super.onResume();
            //输出日志
            Log.d(TAG , "-------onResume------");        
        }
        @Override
        public void onPause() 
        {
            super.onPause();
            //输出日志
            Log.d(TAG , "-------onPause------");        
        }
        @Override
        public void onStop() 
        {
            super.onStop();
            //输出日志
            Log.d(TAG , "-------onStop------");        
        }
        @Override
        public void onDestroy()
        {
            super.onDestroy();
            //输出日志
            Log.d(TAG , "-------onDestroy------");        
        }
    }

    将Activity设置为程序的入口Activity,当程序启动并执行该Activity,在LogCat窗口输出:

     

     当按下主页键,返回到桌面,当前该Activity将失去焦点且不可见,但该Activity并未被销毁,只是进入停止状态。此时的LogCat输入:

     

    再次找到该应用并启动它,将可以看到下面的输出:

     

    如果用户单击返回键,该Activity将会结束自己,LogCat输出:

     

    这就是我对Activity生命周期的一些认识,希望能够帮助到大家。

    注:本人参考了疯狂Android讲义。

  • 相关阅读:
    Linux系统格式化磁盘+挂载分区
    ELK日志处理
    memcached安装+绑定访问ip
    Redis安装+密码认证
    linux安全
    Mysql备份与恢复
    MySql binlog
    gitlab自动备份
    Rabbitmq安装与配置
    Hadoop实战-Flume之Source interceptor(十一)(2017-05-16 22:40)
  • 原文地址:https://www.cnblogs.com/phj981805903/p/3235639.html
Copyright © 2011-2022 走看看