Android中Activity的生命周期
简介:
这个基本是必问的问题了,说一下你对Activity生命周期的理解,呵呵…
onCreate, onStart, onResume, onPause, onStop, onDestroy, onRestart这些大家都知道 如何回答的不落俗套,比格高呢…
先上一张完整的生命周期图吧: Activity/Fragment生命周期总结
分析:
那么为什么要弄这么多函数出来呢,主要是因为在Android中,应用间切换的需求比较频繁,这么做主要是为了适应这种场景。比如两个Activity来回切换会有如下工作要做:
- 所有个静态初始化工作,此时view还不存在,需要创建view,绑定数据;提供之前封存的状态;(onCreate)
- 显示给用户(onStart)
- 开始与用户交互,显示动画,打开独占资源;(onResume)
- 保存所有的为保存数据,停止动画以及所有的耗CPU资源操作;提交在用户离开时期待保存的内容(例如邮件草稿);释放独占资源(以防下一个App使用);(onPause)
- 一些不适合放在onPause中做的工作(heavy-load)(onStop)
- 释放App关联资源,比如onCreate创建的线程,停止Trace收集,保证App终止时没有泄漏资源(onDestroy)
如果把这些所有启动动作都放在一个函数,比如onStart中明显是不合理的: 如果这两个Activity分别称为AAty和BAty,从A切换到B再切换到A,onCreate中的动作明显不需要再做了,所以必须要独立出来放到onCreate中,以便碰到这种情况的时候不执行onCreate;另外如果在onStart中显示动画显然也是不合理的,因为Activity在当时还不可见,所以把onResume独立出来。停止的过程则反之。
原则:
- onCreate里面尽量少做事情,避免程序启动太久都看不到界面
- onStart()方法是一个来验证某些必须的系统特性是否可用的比较好的地方。
- onPause()并不是Activity是否可见的最好指示器,有可能有keyboard在前台,应使用 onWindowFocusChanged(boolean) 做判断。
- 如果对应的onPause()在500ms内还没有执行完,ActivityManagerService就会强制关闭这个Activity.所以不应该使用onPause()来保存用户改变的数据 (例如填入表格中的个人信息) 到永久存储(File或者DB)上,而放到onStop中来加快切换速度。
- 几乎所有Activity的子类,都会实现onCreate和onPause这两个方法
- 不应该使用onDestroy保存数据,比如对content provider的保存应该在onPause或者onSavedInstanceState中进行,因为极端情况下,系统会直接杀死我们的app进程,并不执行activity的onDestroy()回调方法, 因此我们需要使用onStop()来释放资源,从而避免内存泄漏。
问题:
1. 切换过程为什么一定是A:onPause()->B:onCreate()->A:onStop()呢
如果不执行A:onPause()来释放独占资源,B根本无法使用。 先执行B:onCreate()最后再执行A:onStop()是为了尽快让B进入可交互状态,提升用户体验,onStop中一些耗时操作可以在可交互以后慢慢执行。
参考:
- Activity/Fragment最强生命周期总结
- Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?
Android中Activity的生命周期的更多相关文章
- 浅谈Android中Activity的生命周期
引言 我想对于Android开发人员来说,Activity是再熟悉不过了,今天我们就来探讨下Activity的生命周期.熟悉的掌握Activity对于开发健壮的Android应用程序来说至关重要.下面 ...
- 【android】android中activity的生命周期
activity生命周期: 实例代码: public class DemoActivity extends Activity { //1.activity第一次被创建的时候,执行 @Override ...
- Android应用程序中Activity的生命周期
Android应用程序中Activity的生命周期 对于Android来说Activity的生命周期是非常的重要,尤其是对于新学者来说,只有充分了解了Activity的生命周期,才能写出优良用户体验的 ...
- 每天一点Android干货-Activity的生命周期
Activity Activity是这样一个程序组件,它为用户提供一个用于任务交互的画面. 一个应用程序通常由多个activity组成,它们彼此保持弱的绑定状态.典型的,当一个activity在一个应 ...
- Android之Activity的生命周期
PS:写一发关于Activity的生命周期,也算是面试的重点内容. 学习内容: 1.Activity的生命周期 2.面对多种情况的时候Activity的生命周期 3.onSaveInstanceSta ...
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...
- android学习——activity的生命周期
Android中主要组件之Activity的生命周期,基本都是翻译Android API和个人的理解. 首先看一下Android api中所提供的Activity生命周期图: Activity其实是继 ...
- Android中服务的生命周期与两种方式的区别
服务的生命周期跟Activity的生命周期类似.但是生命周期甚至比你关注服务如何创建和销毁更重要,因为服务能够在用户不知情的情况下在后台运行. 服务的生命周期---从创建到销毁---可以被分为以下两个 ...
- Android的activity的生命周期
activity的生命周期有四个重要的状态:活动,暂停,停止,销毁 基本的方法有:onCreate.onStart.onResume.onPause.onStop.onDestory 最经常使用的方法 ...
随机推荐
- 第二,C语言示例
#include<stdio.h> int main (void) /*WTF*/ { int num; num=1; printf(" I am ...
- Snipaste
http://files.cnblogs.com/files/hwd13/Snipast.zip
- Java知识积累-XML的DOM解析修改和删除方法
import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder;import jav ...
- iOS - AliPay 支付宝支付
1.支付宝支付申请 支付宝支付官方签约集成指引 支付宝APP支付官方集成指引 蚂蚁金服开放平台 1.1 支付宝 APP 支付申请步骤 APP 支付:APP 支付是商户通过在移动端应用 APP 中集成开 ...
- DG的Switchover切换
用户可以使用角色管理服务,进行主.备库的计划中的角色切换,这个叫switchover,或者是非计划中的角色切换,叫failover. 目的:实现主库(orcl)和从库(standby)的切换 主库参数 ...
- MemCache中的内存管理详解
MC的内存管理机制 1.内存的碎片化 当我们使用C语言或者其他语言进行malloc(申请内存),free(释放内存)等类似的命令操作内存的时候, 在不断的申请和释放的过程中,形成了一些很小的内存片段, ...
- python爬虫实战(一)——实时获取代理ip
在爬虫学习的过程中,维护一个自己的代理池是非常重要的. 详情看代码: 1.运行环境 python3.x,需求库:bs4,requests 2.实时抓取西刺-国内高匿代理中前3页的代理ip(可根据需求自 ...
- SPSS数据分析—生存分析
生存分析是对生存时间进行统计分析的一种技术,所谓生存时间,就是指从某一时间点起到所关心的事件发生的这段时间.这里的时间不一定就是钟表日历上的时间,也有可能是其他的度量单位,比如长度单位等. 生存时间有 ...
- Sublime Text 2 代码片断
原文:Snippets 不管是在编码,还是写畅销书,你都可能会需要一遍又一遍的用到一些文本的小片断.使用片断来结束这种单调无聊的码字吧,片断是一种智能的模板,它能在合适的上下文中插入你需要的文本内容. ...
- android-studio-bundle-141.1980579-windows download Site
https://dl.google.com/dl/android/studio/install/1.2.2.0/android-studio-bundle-141.1980579-windows.ex ...