Android Activit生命周期方法
来源:互联网 发布:ips 知乎 编辑:程序博客网 时间:2024/06/10 19:11
Activity的生命周期方法不需要开发者调用,框架会自动来调用这些方法,理解Activity的生命周期及这些方法可以对我们的开发有很大的帮助。
首先创建一个工程,然后重写Acitvity的各个生命周期方法,在里边用Log输入当前方法名
package com.example.activitytest;import android.app.Activity;import android.app.ActionBar;import android.app.Fragment;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.os.Build;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.fragment_main);Log.i("info", "First activity onCreate");}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onRestoreInstanceState(savedInstanceState);Log.i("info", "First activity onRestoreInstanceState");}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.i("info", "First activity onStart");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.i("info", "First activity onResume");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.i("info", "First activity onPause");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.i("info", "First activity onStop");}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();Log.i("info", "First activity onRestart");}@Overrideprotected void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stubsuper.onSaveInstanceState(outState);Log.i("info", "First activity onSaveInstanceState");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.i("info", "First activity onDestroy");}}
执行代码,可以看到在Logcat里打印出“First activity onCreate”→“First activity onStart”→“First activity onResume”,可以看到执行顺序为“oncreate”,"onstart",“onResume”,当按电源键关闭屏幕或者按“home”键切换的桌面的时候,会调用“First activity onPause”→"First activity onSaveInstanceState"→"First activity onStop"。当前Activity处于半透明或在完全不可见之前会调用onPause方法,在此之后会调用onSaveInstanceState来保存当前Activity的状态,最后再调用onStop方法,此时该Activity已经完全不可见。注意:此时该Actvity并没有被销毁。当我们再次点击程序图标的时候就会执行“First activity onRestart”→"First activity onStart"→“”First activity onResume。现在可以看一下程序跟第一次执行时的不同,在第一次执行时首先会执行“oncreate”方法,并没有执行“onrestart”方法,当程序切到后台,再次切回来的时候发现“oncreate”并没有执行,“onrestart”执行了。所以我们在写代码的时候要考虑哪些代码应该写在onCreate里,哪些应该写在onRestart里。
当我们在Activity的可见状态下按“back”键,会执行“First activity onPause”→"First activity onStop"→“First activity onDestroy”,此时Activity被销毁,该Activity的生命周期结束。
Activity的完整生存周期是指对oncreate方法的第一次调用和对ondestroy方法的最后一次调用之间的时间范围。有时候还会发生一个Activity的进程被终止,却没有调用onDestroy方法的情况。
使用oncreate方法来初始化Activity:填充用户界面,得到对Fragment的引用,分配对类变量的引用,将数据绑定到控件,并启动Service和定时器。如果Activity被运行时意外终止,oncreate方法接受一个包含UI状态的Bundle对象,该对象是在最后一次调用onSaveInstanceState时保存的,应该使用这个Bundle将UI恢复为上一次的状态,这里既可以通过oncrate方法,也可以通过重写onRestoreInstanceState来实现。
通过ondestroy方法来清理oncreate创建的所有资源,并保证所有的外部连接(例如,网络或者数据库连接)都关闭了。
作为使用Android编写高效代码的指导原则的一部分,我们建议最好避免创建短期对象。对象的快速创建和销毁会导致额外的垃圾收集过程,而这个过程会对用户体验产生直接的影响。如果Activity是有规律地创建相同的对象集,那么可以考虑在oncreate方法中创建他们,因为它只在Activity的生存周期中被调用一次。
注:部分摘自其他资料
- Android Activit生命周期方法
- Activit——生命周期
- android之activit和intent
- Android四大组件简述之Activit
- Android初试--Activit的简单介绍(1)
- Android初试--Activit的启动模式
- android生命周期方法简要记录
- Android Activity生命周期方法onSaveInstanceState
- 启动activit
- activit 单元测试
- Android 屏幕旋转生命周期以及处理方法
- Android Fragment 替换覆盖生命周期方法详解
- Android 状态保存 生命周期 onSaveInstanceState onRestoreInstanceState 方法
- Android-Activity生命周期 基本方法的作用
- Android自定义View生命周期及其移动方法
- Android基础Activity的生命周期方法
- android横竖屏切换的生命周期方法
- Android-activity的生命周期常用方法概述
- java内存分配
- 关于bootloader,eboot,uboot,norflash,nandflash。
- 引用计数
- node-webkit:用JS开发跨平台的桌面应用
- makefile的一个模板
- Android Activit生命周期方法
- ios json解析
- what is "LSB " Linux Standard Base介绍
- Vertical Histogram
- Ant标签总结(模板)
- DatePicker月份字体大小,月份宽度,隐藏月份
- Android图片墙,解决oom 20140714
- Mysql主从数据库配置详解
- 一次lire 图像搜索调用方法的查看