博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android应用开发提高系列(6)——Activity生命周期
阅读量:5757 次
发布时间:2019-06-18

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

 

前言

  四大应用程序组件中Activity是最常用的,也是必须掌握的一个组件。这里分几章梳理归纳一些实用的知识点与大家分享。

声明

  欢迎转载,但请保留文章原始出处:) 

    博客园:http://www.cnblogs.com

    农民伯伯: http://over140.cnblogs.com

 

正文

  一、配图及说明

    

    Activity主要的三种状态:

      Running(运行):在屏幕前台(位于当前任务堆栈的顶部)

      Paused(暂停):失去焦点但仍然对用户可见(覆盖Activity可能是透明或未完全遮挡)

      Stopped(停止):完全被另一个Activity覆盖

 

  二、事件方法链

    2.1  进入Activity

      onCreate  -> onStart  ->  onResume

    2.2  BACK键

      onPause -> onStop -> onDestroy

    2.3  HOME键
      Home键退出:onPause -> onStop 
      Home键回来:onRestart ->  onStart -> onResume  

    2.4  休眠/恢复

      休眠:  onPause

      恢复:  onResume

    2.5  旋转屏幕

      未设置android:configChanges:

        onPause  ->  onStop  ->  onDestory  ->  onCreate  -> onStart  ->  onResume 

      设置了android:configChanges="orientation|keyboardHidden":

          不会触发生命周期方法,参见文章。 

    2.6  来电

      来电,显示来电界面:

        onPause  ->  onStop

      关闭电话界面,重新回到当前Activity:

        onRestart ->  onStart -> onResume

    2.7  其他Activity 

      进入下一个Activity:

        onPause  ->  onStop

      从其他Activity返回至当前Acitivity:

        onRestart ->  onStart -> onResume

 

  三、与Activity生命周期结合的应用场景

    3.1  与广播(Broadcast)结合 

      在onResume注册广播(registerLinstener),在onPause注销广播(unregisterLinstener)。 例如:

      做"摇一摇"功能(传感器)、监听网络变化,就可以在onResume中注册监听,在onPause里注销掉,已节省资源提高效率。

    3.2  与服务(Service)结合

      在onStart绑定服务(bindService),在onStop中取消绑定(unbindService)。 例如: 

      需要通过Service定时更新UI上的数据,而Activity的可见周期在onStart与onStop之间,那么就可以再onStart时启动服务,在onStop时停止服务。为了节约系统资源,除了提高用户体验以外,开发人员应尽可能的优化程序。

    3.3  与Cursor结合

      使用managedQuery让Activity帮你管理Cursor的生命周期,不用自己去close。但也有一些问题,补充两篇文章:、 。

    3.4  释放资源

      可以在onDestory中释放一些资源。比如可以在onDestory时调用MediaPlayer的release。

 

  四、注意

    4.1  所有Activity生命周期方法的实现都必须先调用其父类版本。

    4.2  由于Activity经常会暂停和恢复之间切换,所以onResume和onPause这两个方法应当是轻量级的。

    4.3  在系统再某种紧急情况下需要回收内存,onStop、onDestory可能不会被调用,因此需要在onPause中把需要长期保存的数据保存起来。

  

  五、相关文章

    [Android中文Wiki] 开发者指南

    

    

    

 

结束

  要写的内容很多,同样这方面的文章也很多,仍然建议大家仔细的看Activity的API和开发者指南。 

你可能感兴趣的文章
5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vi
查看>>
减小VirtualBox虚拟硬盘文件的大小
查看>>
前端与移动开发项目二
查看>>
文本导入sql server 出错:数据转换失败
查看>>
MySQL 数据库服务
查看>>
Linux环境下实现MariaDB数据库的三种备份和还原
查看>>
用flask_login管理用户的登录
查看>>
用Breeze部署kubernetes高可用集群
查看>>
2018-11-02直播笔记
查看>>
hive的视图
查看>>
如何给PDF文件裁剪页面
查看>>
好程序员HTML5大前端分享学Web前端开发有哪些要求
查看>>
好程序员分享http的keep-alive和tcp的keep-alive区别
查看>>
【网站优化实例教程】怎样运用分类信息网做网站优化【网优谷经验】
查看>>
oracle教程之死锁
查看>>
我的友情链接
查看>>
用php写一个管理外借设备的小工具--技术提高生产力
查看>>
程序员面试题100题第11题——求二元查找树的镜像(即交换左右子树)
查看>>
费氏数列
查看>>
程序员面试题100题第04题——在二元树中找出和为某一值的所有路径
查看>>