参考:《Professional Android 4 Application Development》

Android应用程序生命周期

Android应用程序无法控制自己的生命周期,因此它必须在自己的生命周期状态发生变化时作出相应的反应。

Android应用程序的优先级和它进程的状态

进程的重要性取决于它host的应用程序,应用程序的优先级等于程序中优先级最高的组成部分。(The
order in which processes are killed to reclaim resources is determined by the priority of their hosted applications. An application’s priority is equal to that of its highest-priority component.)

如果两个应用程序的优先级一样,运行时间最长的程序会先被杀掉。进程的优先级同时还决定于相互依赖关系,如果程序A依赖于程序B中的Service或Content
Provider,那么程序B的优先级不会低于程序A。

从上面的Android Process优先级树可以看出,分清程序的状态和优先级,并对其作出适当的处理,是很重要的。

  • Active Process:Active(foreground)
    process会直接响应用户的操作,具有最高的优先级,包括下面几种:

    • 处于active state的Activities

    • 正在执行onReceive方法的Broadcast Receivers

    • 正在执行onStart, onCreate或onDestroy方法的Service

    • 标记为前台运行(foreground)的Service

  • Visible Process:顾名思义,这是指可以看见(visible),但不在前台(foreground)运行的程序。当一个Activity部分被遮住时,它就成了Visible
    Process。例如程序运行时收到短信,有些短信会部分遮挡应用程序。

  • Started Service Process:顾名思义,包含运行状态Service的Process。

  • Background Process:Process中所host的Activity既不visible,又没有任何运行中的service,使用last-seen-first-killed模式进行管理。

  • Empty Process:在资源不紧张时,Android会将运行结束的程序放在内存中,从而可以更快地启动这些程序。这种已经死亡但仍在内存中的Process,就是Empty
    Process。

Android Application类简介

Application类具有这几个职责:

  1. 响应系统发出的Application级别的广播,例如low memory等。

  2. 在系统的不同组件之间传递对象。

  3. 管理多个组件共享的资源。

为了更好地第2,3条所要求的功能,Application类使用了单例模式。

重载Application类的生命周期事件方法

  • onCreate:重载此方法可以对Application的单例进行修改。

  • onlowMemory:重载此方法来清除缓存或释放其他资源。

  • onTrimMemory:往往发生在程序状态转为background时。

  • onConfigurationChanged:Application在配置文件发生变化时不会自动重启,所以可以在这个方法里响应配置修改事件。

Android 4学习(5):概述 - Android应用程序的生命周期的更多相关文章

  1. 我的Android 4 学习系列之创建应用程序和Activity:Manifest、Application、Activity

    目录 介绍Android应用程序组件,以及使用这些组件构建的各种Android应用程序 Android应用程序的生命周期 如何创建应用程序Manifest 如何使用外部资源提供对位置.语言和硬件配置的 ...

  2. Android应用程序的生命周期

    转自Android应用程序的生命周期 在对一个简单的Hello World工程进行项目结构剖析后,我们接着来学习下一个Android应用程序的生命周期是怎么样的,以便为后面的开发有个垫下良好的基石~ ...

  3. Android系列之Fragment(二)----Fragment的生命周期和返回栈

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  4. ASP.NET 应用程序(Application)生命周期概述

    原文:ASP.NET 应用程序(Application)生命周期概述 引用MSDN:ASP.NET 应用程序生命周期概述 本 主题概述应用程序生命周期,列出重要的生命周期事件,并描述如何编写适合应用程 ...

  5. 教你理解微信小程序的生命周期和运行原理

    转自:http://blog.csdn.net/tsr106/article/details/53052879  写微信小程序,他的生命周期不能不知道,不知道小程序就会出现各种bug而无法解决.小助君 ...

  6. 理解微信小程序的生命周期和运行原理

    写微信小程序,他的生命周期不能不知道,不知道小程序就会出现各种bug而无法解决.小助君公众号带你学习小程序的生命周期和运行原理. 小程序由两大线程组成:负责界面的线程(view thread)和服务线 ...

  7. 小程序的生命周期 launchApp

    https://developers.weixin.qq.com/miniprogram/dev/api/launchApp.html?search-key=生命周期 launchApp(OBJECT ...

  8. asp.net MVC 应用程序的生命周期

    下面这篇文章总结了 asp.net MVC 框架程序的生命周期.觉得写得不错,故转载一下. 转载自:http://www.cnblogs.com/yplong/p/5582576.html       ...

  9. 微信小程序之生命周期(三)

    [未经作者本人同意,请勿以任何形式转载] 上一篇介绍微信小程序开发工具使用和项目目录结构. 这一章节介绍微信小程序的生命周期,什么是生命周期呢? 通俗的讲,生命周期就是指一个对象的生老病死. 从软件的 ...

  10. asp.net MVC 应用程序的生命周期(上)

    首先我们知道http是一种无状态的请求,他的生命周期就是从客户端浏览器发出请求开始,到得到响应结束.那么MVC应用程序从发出请求到获得响应,都做了些什么呢? 本文我们会详细讨论MVC应用程序一个请求的 ...

随机推荐

  1. 先有Class还是先有Object?

    先有Class还是先有Object? Java的对象模型中: 所有的类都是Class类的实例,Object是类,那么Object也是Class类的一个实例. 所有的类都最终继承自Object类,Cla ...

  2. Qt QT的IO流 QT输入输出

    1. QFile QDataStream 读写文件  二进制读写文件 #include <QApplication> #include <QtGui> #include < ...

  3. BZOJ4199/UOJ131 [Noi2015]品酒大会

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  4. Codeforces Beta Round #61 (Div. 2) D. Petya and His Friends 想法

    D. Petya and His Friends time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  5. pandas read_sql与read_sql_table、read_sql_query 的区别

    一:创建链接数据库引擎 from sqlalchemy import create_engine db_info = {'user':'user', 'password':'pwd', 'host': ...

  6. 元数据(MetaData)

    元数据是用来描述数据的数据(Data that describes other data).单单这样说,不太好理解,我来举个例子. 下面是契诃夫的小说<套中人>中的一段,描写一个叫做瓦莲卡 ...

  7. Prism 文档 第三章 管理组件之间的依赖关系

                                                                          第3章:管理组件之间的依赖关系 基于Prism库的复合应用程 ...

  8. ICollectionView

    引自:http://www.cnblogs.com/Joetao/articles/2168577.html ICollectionView让MVVM更简单   (一)ICollectionView的 ...

  9. Lucene.Net 优化索引生成,即搜索显示优化

    最近发现站内搜索引擎响应速度很慢,因为刚来公司之前技术员跑了源码什么的都没留下.只好自己手动破解源代码dll查找问题所在! 这个问题代码就暂时不贴了这里只写思路 原逻辑:经过整体分析后发现之前是使用 ...

  10. 如何理解python中的if __name__=='main'的作用

    一. 一个浅显易懂的比喻 我们在学习python编程时,不可避免的会遇到if __name__=='main'这样的语句,它到底有什么作用呢? <如何简单地理解Python中的if __name ...