Activity生命周期理解
来源:互联网 发布:蘑菇街宝贝如何优化 编辑:程序博客网 时间:2024/05/15 23:44
其实,理解Activity周期写一个demo可以更好帮助我们体会。
package com.lcl.view;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i("MM", "onCreate"); // Activity正在被创建;可以做初始化操作 。比如调用setContentView加载界面布局资源,初始化Activity所需数据 } @Override protected void onRestart() { super.onRestart(); Log.i("MM", "onRestart"); //Activity重新启动,Activity从不可见到可见,onRestart会被调用 } @Override protected void onStart() { super.onStart(); Log.i("MM", "onStart"); //Activity正在被启动;此时,Activity可见,但是还没有出现在前台,无法和用户交互,可理解为用户不可见 } @Override protected void onResume() { super.onResume(); Log.i("MM", "onResume"); //Activity已经可见,并且出现在前台并开始活动;与onStart()方法都表示Activity已经可见, // 区别是onStart()是后台可见,onResume()是前台可见 } @Override protected void onPause() { super.onPause(); Log.i("MM", "onPause"); //表示Activity正在停止,正常情况下,紧接着onStop会被执行 } @Override protected void onStop() { super.onStop(); Log.i("MM", "onStop"); //Activity即将停止,可以做一些回收但不太耗时操作 } @Override protected void onDestroy() { super.onDestroy(); Log.i("MM", "onDestroy"); //表示Activity即将被销毁,此时可以做一些回收和资源释放操作 }}
01)一个事物总是从诞生开始的,Activity作为重要的组件,它的生命周期也是如此。
第一个方法就是诞生onCreate(),那个它可以做些什么事情呢?
onCreate()表示Activity被创建,可以做初始化操作。比如,我们自己写的布局,一些数据初始化都通过这个方法呈现出来
02)新事物出现后,然后开始成长。这就是onStrat()方法。
onStart()方法表示Activity正在被启动,此时Activity由不可见变为可见,但是是后台可见,此时用户还是看不到,还不能与用户交互。
03)新事物出现,不能没用要不然有什么用呢。别着急,onResume()方法发挥作用时刻到了。
onResume()表示Activity可见,此时用户可见并且能交互。
04)但是,这几个方法不能解决所有突发情况。比如,我按了home键,这是有个方法叫onPause(),顾名思义,暂停,表示Activity正在停止,此时可以做一些简单保存,动画暂停等不耗时操作,太耗时会影响Activity显示。仅仅暂停是不行的,还需调用onstop()
05)onStop()表示Activity即将停止,此时可以做一些回收的操作,但同样不能太耗时。
06)onDestroy()方法是Activity即将销毁,此时可以做回收和资源释放操作。
07)onRestart()表示Activity重启,一般Activity从不可见变为可见,会执行此方法。
那么,手机运行一下程序
执行结果:
onCreate()
onStart()
onResume()
解释一下,Activity从开始创建(onCreate) 到启动 (onStart)然后我们能看到界面(onResume)就是这三个方法
此时按下home键,
执行结果:
onPause()
onStop()
解释一下,从界面出现到后台过程,先执行暂停(onPause)然后停止(onStop)
此时点击桌面程序,执行结果:
onRestart()
onStart()
onResume()
解释一下,从桌面点击时,此时是后台运行,从后台可见到前台可见在程序未销毁前提下,会执行重启,不需要重新创建,onRestart(),然后执行被启动onStart(),最后执行onResume()用户可见界面。
如果按下的是返回键,执行结果:
onPause()
onStop()
onDestroy()
解释一下,跟home键不同的是执行销毁了,此时程序结束了
在用户可见界面按下电量键,执行结果:
onPause()
onStop()
跟使用home键效果一样,都是从用户可见状态到用户不可见,后天可见状态。
此时再解锁屏保,执行结果:
onRestart()
onStart()
onResume()
从后台到前台用户可见过程
执行截图 音量键+电量键,执行结果:
没有执行任何周期方法,说明截图没有对Activity产生影响。
那么横竖屏生命周期会怎么样呢?
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,横竖屏都执行一次。
2、设置Activity的android:configChanges=”orientation”时,跟不设置一致,切屏还是会重新调用各个生命周期,横竖屏都执行一次
3、a. android:targetSdkVersion <= 12时,不会重新创建
b. android:targetSdkVersion > 12时,和不设置一样,重新创建。
c. 该点是网上获得的资料,没测试。在4.0以下的是不重建,而4.0以上的则为a,b所叙述。本测试机器为4.3。
设置Activity的android:configChanges=”orientation|keyboardHidden|screenSize”时,不重新创建Activity。
- 理解Activity的生命周期
- Activity生命周期理解
- Activity生命周期的理解
- Activity生命周期理解
- Activity生命周期理解
- Android Activity生命周期理解
- 理解Activity生命周期
- Activity生命周期理解
- Activity----生命周期的理解
- 快速理解 activity生命周期
- Android Activity生命周期理解
- Activity生命周期之理解
- 理解Activity Fragment生命周期
- Activity的生命周期理解
- activity生命周期深入理解
- Activity的生命周期理解
- 理解activity的生命周期
- Android Activity生命周期理解
- C# 矩阵变换Matrix
- web.xml有关过滤器的配置
- 关于Okhttp(一)
- 二叉树:由已知的遍历方式求另外的遍历方式
- 关于使用pyinstaller 打包带有matplotlib 等出现UnicodeDecodeError解决方法
- Activity生命周期理解
- 函数-函数的重载
- 『设计模式』之小试牛刀
- string.h和strings.h的区别
- Eclipse 安装 SVN 在线插件教程
- 我早年在Google学到的10条经验
- 1.揭秘angular2学习 ------- angualr架构总览
- 面向对象的程序设计Java-类和对象
- 选项卡实现