博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activity的生命周期和启动模式
阅读量:6456 次
发布时间:2019-06-23

本文共 1535 字,大约阅读时间需要 5 分钟。

典型情况下的生命周期

  • onCreate 表示创建Acticity,在这个方法中可以做一些初始化的操作,如加载界面布局资源,初始化Activity所需的数据

  • onRestart 表示重新启动Activity,正常情况下,当前Activity从不见到可见,就会调用此方法。

  • onStart 表示启动Acticity,这个时候Activity可见,但是不能进行UI交互。

  • onResume 表示Activity出现到前台,可与之交互。

  • onPause 表示Activity正在暂停,接着会执行onStop。这个方法中可以做一些数据存储,停止动画,但不能耗时操作,不然Activity之间的切换会有卡顿,不自然。

  • onStop 表示Activity马上就会停止,可以做一些稍微耗时的回收工作。

  • onDestroy 表示Activity即将销毁,在这个方法中做一些回收工作和资源的释放。

两个Acticity之间切换的生命周期:第一个Activity执行onPause后,第二个Activity执行onCreate -> onStart ->onResume,第一个Activity再执行onStop。

异常情况下的生命周期

1、资源相关的系统配置发生改变导致Activity被杀死并重新创建: 正常周期依旧会被调用,但是会调用onSaveInstanceState,当重新创建后会调用onRestoreInstanceState,我们可以利用这个特性来保存恢复数据。

2、资源不足导致低优先级的Activity被杀死:

  • 前台Activty -- 正在和用户交互的Activity,优先级最高
  • 可见但非前台Activity
  • 后台Activity -- 已经被暂停的Activity,比如执行的onStop,优先级最低。

为了防止被系统杀死,后台工作一般放在Service中执行,防止系统轻易杀死。

Activity启动模式

当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中。Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置。

1.Standard模式(默认) 我们平时直接创建的Activity都是这种模式的Activity,这种模式的Activity的特点是:只要你创建了Activity实例,一旦激活该Activity,则会向任务栈中加入新创建的实例,退出Activity则会在任务栈中销毁该实例。

2.SingleTop模式 这种模式会考虑当前要激活的Activity实例在任务栈中是否正处于栈顶,如果处于栈顶则无需重新创建新的实例,会重用已存在的实例,否则会在任务栈中创建新的实例。

3.SingleTask模式 如果任务栈中存在该模式的Activity实例,则把栈中该实例以上的Activity实例全部移除,调用该实例的newInstance()方法重用该Activity,使该实例处於栈顶位置,否则就重新创建一个新的Activity实例。

4.SingleInstance模式 当该模式Activity实例在任务栈中创建后,只要该实例还在任务栈中,即只要激活的是该类型的Activity,都会通过调用实例的newInstance()方法重用该Activity,此时使用的都是同一个Activity实例,它都会处于任务栈的栈顶。此模式一般用于加载较慢的,比较耗性能且不需要每次都重新创建的Activity。

转载于:https://juejin.im/post/5a30f2e86fb9a045076faa06

你可能感兴趣的文章
php扩展有哪些G11,php 几个扩展(extension)的安装笔记
查看>>
oracle报1405,【案例】Oracle报错ORA-15054 asm diskgroup无法mount的解决办法
查看>>
linux 脚本map,Linux Shell Map的用法详解
查看>>
如何在linux系统下配置共享文件夹,如何在windows和Linux系统之间共享文件夹.doc
查看>>
linux操作系统加固软件,系统安全:教你Linux操作系统的安全加固
查看>>
linux中yum源安装dhcp,24.Linux系统下动态网络源部署方法(dhcpd)
查看>>
ASP.NET性能优化之分布式Session
查看>>
TaffyDB Introduction
查看>>
转载:《TypeScript 中文入门教程》 16、Symbols
查看>>
JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记4
查看>>
C#技术------垃圾回收机制(GC)
查看>>
漫谈并发编程(三):共享受限资源
查看>>
【转】github如何删除一个仓库
查看>>
Linux系统编程——进程调度浅析
查看>>
大数据Lambda架构
查看>>
openCV_java 图像二值化
查看>>
状态模式
查看>>
删除CentOS / RHEL的库和配置文件(Repositories and configuraiton files)
查看>>
DJANGO变动库的一次真实手动经历
查看>>
8个基本的引导工具的网页设计师
查看>>