Application类

原创 2016年08月30日 10:59:14

源码中对其的描述:
* Base class for those who need to maintain global application state. You can
* provide your own implementation by specifying its name in your
* AndroidManifest.xml’s <application> tag, which will cause that class
* to be instantiated for you when the process for your application/package is
* created.

applicaton对象一直存在于整个程序的运行周期,是运行周期最长的一个对象。该对象继承Application类,在manifeset.xml中配置。因为application对象长期的存在,可以使用其承载参数进行全局的传递。Context中的getApplicationContext或者Activity中的getApplication方法可以获取appliction对象。application中可以使用Map(String,Object)进行复杂类型的数据传递。Intent、Buddle中的简单类型或者使用android中IPC数据传递Serializable的数据传递优越很多。application中可以做页面跳转中做数据cache,可以使用软引用,数据量大可以cache到rom或者sdcard中。因为application对象的长期存在,注意其中变量对引用的持有,以免造成内存泄露。

备注:application 被杀死的情况分析:
为了决定在内存较低的时候杀掉哪个进程, Android会根据运行在这些进程内的组件及他们的状态把进程划分成一个”重要程度层次”. 其重要的程度按以下规则排序:
1:前端进程可以是一个持有运行在屏幕最前端并与用户交互的Activity的进程(onResume方法被调用时),也可以是持有一个正在运行的IntentReceiver(也就是说他正在执行自己的onReceiveIntent方法)的进程. 在系统中, 只会有少数这样的进程, 并且除非内存已经低到不够这些进程运行, 否则系统不会主动杀掉这些进程. 这时, 设备通常已经达到了需要内存整理的状态, 所以杀掉这些进程是为了不让用户界面停止响应.
2:可视进程是持有一个被用户可见, 但没有显示在最前端 (onPause方法被调用时) 的Activity的进程. 举例来说, 这种进程通常出现在一个前端Activity以一个对话框出现并保持前一个Activity可见时. 这种进程被系统认为是极其重要的, 并且通常不会被杀掉, 除非为了保持所有前端进程正常运行不得不杀掉这些可见进程.
3:服务进程是持有一个Service的进程, 该Service是由startService()方法启动的, 尽管这些进程用户不能直接看到, 但是通常他们做的工作用户是十分关注的(例如, 在后台播放mp3或是在后台下载 上传文件), 所以, 除非为了保持所有的前端进程和可视进程正常运行外, 系统是不会杀掉服务进程的.
4:后台进程是持有一个不再被用户可见的Activity(onStop()方法被调用时)的进程. 这些进程不会直接影响用户体验. 加入这些进程已经完整的,正确的完成了自己的生命周期(访问Activity查看更多细节), 系统会在为前三种进程释放内存时随时杀掉这些后台进程. 通常会有很多的后台进程在运行, 所以这些进程被存放在一个LRU列表中, 以保证在低内存的时候, 最近一个被用户看到的进程会被最后杀掉.
5:空进程是没有持有任何活动应用组件的进程. 保留这种进程的唯一理由是为了提供一种缓存机制, 缩短他的应用下次运行时的启动时间. 就其本身而言, 系统杀掉这些进程的目的是为了在这些空进程和底层的核心缓存之间平衡整个系统的资源
当需要给一个进程分类的时候, 系统会在该进程中处于活动状态的所有组件里掉选一个重要等级最高作为分类依据. 查看Activity, Service,和IntentReceiver的文档, 了解每个组件在进程整个生命周期中的贡献. 每一个classes的文档详细描述他们在各自应用的生命周期中所起得作用.
mirrors.neusoft.edu.cn 80

版权声明:本文为博主原创文章,未经博主允许不得转载。

Application类学习总结

一、Application继承关系:Application extends ContextWrapper implements ComponentCallbacks2 1、ContextWrapper...
  • tscyds
  • tscyds
  • 2015年08月18日 14:40
  • 1000

安卓中Application类的全面总结

Android中Application类的全面总结   首先看看官网的介绍:   下面是我对Application类的理解: 每个APP都有一个Applica...
  • wzx104104104
  • wzx104104104
  • 2017年05月29日 18:11
  • 286

android Application类的详细介绍

android Application类的详细介绍 分类: android Application类的详细介绍 android 方法详解2011-11-19 14:53 4101人阅读 ...
  • pi9nc
  • pi9nc
  • 2013年09月06日 11:00
  • 66282

android中application类的作用

文章出处:http://www.2cto.com/kf/201202/118039.html android 开发中共享全局数据 我们在平时的开发中,有时候可能会需要一些全局数据,来让应用中的所有...
  • H573406032
  • H573406032
  • 2014年03月04日 14:27
  • 1636

Android中Application类总结

本文出处: 炎之铠csdn博客:http://blog.csdn.net/totond 炎之铠邮箱:yanzhikai_yjk@qq.com 本文原创,转载请注明本出处! 前言  最...
  • totond
  • totond
  • 2017年05月27日 15:44
  • 5042

浅析C#(WPF)中的Application类

Application类 封装WFP应用程序。 命名空间:System.Windows 语法:public class Application : DispatcherObject, IQuer...
  • wangshubo1989
  • wangshubo1989
  • 2015年08月28日 10:24
  • 1717

application类的实现以及如何使用application类实现全局变量传值

Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系...
  • u012141522
  • u012141522
  • 2016年02月17日 12:20
  • 1446

Spring Boot的SpringApplication类详解

相信使用过Spring Boot的开发人员,都对Spring Boot的核心模块中提供的SpringApplication类不陌生。SpringApplication类的run()方法往往在Sprin...
  • taiyangdao
  • taiyangdao
  • 2017年08月13日 21:18
  • 1428

C#中Application类简述

http://blog.sina.com.cn/s/blog_6a5b2e450100kpav.html /获取"程序安装路径或程序运行当前路径"             TheInstal...
  • mituan1234567
  • mituan1234567
  • 2013年05月16日 15:45
  • 449

andriod中的 Application类用法

1.Application类的介绍: Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Applicatio...
  • flying_fish_wj
  • flying_fish_wj
  • 2016年08月31日 19:07
  • 396
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Application类
举报原因:
原因补充:

(最多只允许输入30个字)