2019独角兽企业重金招聘Python工程师标准>>>

Application 简介

每次程序运行时,程序的Application 类都是保持实例化。与Activity不同;配置改变并不会导致程序重启。通过扩展Application类,可以完成以下工作:

1.对Android 运行时广播的应用程序级事件(如低内存)作出响应。

2.在应用组件之间传递对象。

3.管理和维护多个应用程序组件使用的资源。

其中后两项工作可以使用一个单态类完成,当Manifest 中注册了一个Application实现后,他会在创建应用程序进程的时候得到实例化。因此,Application的实现在本质上上是单态的,并且应该作为单态进行实现,以便对其方法和成员变量的访问。

扩展和使用Application

Application 类的框架:

public class MyApplication extends Application{private static MyApplication singleton;
//返回应用程序实例public static MyApplication getInstance(){return singleton;}@Overridepublic void onCreate() {super.onCreate();singleton=this;}
}

注意:必须在Manifest文件中注册:

<applicationandroid:name="com.example.persontest.MyApplication"android:allowBackup="true"
[……………………Manifest nodes……………………]        </application>

虽然对于在松耦合的应用程序组件之间传递对象,以及维护应用程序状态或者共享资源,这种方法特别有效;但是一般来说,创建自己的静态单态类比为特殊用途扩展Application类更好一些,除非你还要处理一下描述的生命周期事件。

l  重写应用程序的生命周期事件:

Application类为应用程序的创建和终止,低可用内存和配置改变提供了事件处理程序。

通过重写以下方法,可以为上述几种情况实现自己的应用程序行为:

1.onCreate: 在创建应用程序是调用。可以重写这个方法来实例化应用程序单态,以及创建和实例化任何应用程序状态变量或者公共资源。

2.onLowMemory: 当系统资源匮乏时,具有良好行为的程序可以释放额外的内存。这个方法一般会在后台进已经终止,但是前台应用程序仍然缺少内存时调用。可以重写这个处理程序来清空缓存或者释放不必要的资源

3.onTrimMemory:作为onLowMemory的一个特定于应用程序的替代选择,在Android 4.0(Api Level 13)引入(但是我在官网上看的是level 14)。当(Android Runtime )运行时决定当前应用程序应该尝试减少内存开销时(通常它进入后台是)调用。它包含一个level参数,用于提供请求的上下文。

4.onConfigurationChanged:与Activity不同,在配置改变时,应用程序对象不会被终止或者重启。如果应用程序使用的值依赖于特定的配置,则重写这个方法来重写加载这些值,或者在应用程序级别处理配置改变。

必须在重写这些方法时调用超类的时间处理程序。

public class MyApplication extends Application {private static MyApplication singleton;public static MyApplication getInstance() {if (singleton == null) {singleton = new MyApplication();}return singleton;}@Overridepublic void onCreate() {super.onCreate();singleton = this;}@Overridepublic void onLowMemory() {super.onLowMemory();}@Overridepublic void onTrimMemory(int level) {super.onTrimMemory(level);}@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);}
}

转载于:https://my.oschina.net/litengit/blog/354288

Application 类 简介相关推荐

  1. Android学习笔记(三)Application类简介

    每次运行APP时,Application类都保持实例化状态.与Activity不同,配置改变不会导致应用程序重启.通过继承Application类,可以完成一下3项工作: · 对Android运行时广 ...

  2. Minify框架分析,主要功能类简介

    主要功能类简介 config.php      默认缩小应用程序的配置 index.php:为实施默认缩小的前端控制器请勿编辑!通过config.php和groupsConfig.php配置实用程序 ...

  3. DriverManager 驱动管理器类简介 JDBC简介(三)

    驱动程序管理器是负责管理驱动程序的,驱动注册以后,会保存在DriverManager中的已注册列表中 后续的处理就可以对这个列表进行操作 简言之,驱动管理器,就是字面含义,主要负责就是管理 驱动 概述 ...

  4. Android中用Application类实现全局变量

    在Java中如果要使用全局变量,一般定义public static类型的变量.但是这种方法不符合Android的框架架构,Android中要使用Application context. Applica ...

  5. 【Groovy】集合遍历 ( 使用集合的 reverseEach 方法进行遍历 | 倒序集合迭代器 ReverseListIterator 类简介 | 代码示例 )

    文章目录 一.使用集合的 reverseEach 方法进行倒序遍历 二.倒序集合迭代器 ReverseListIterator 类简介 三.代码示例 一.使用集合的 reverseEach 方法进行倒 ...

  6. Ice笔记-利用Ice::Application类简化Ice应用

    作者:ydogg,转载请申明. 在编写Ice相关应用时,无论是Client还是Server端,都必须进行一些必要的动作,如:Ice通信器初始化.异常捕获,以及应用终止后的销毁.鉴于每个应用都需要,Ic ...

  7. Android中Application类用法

    Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系 ...

  8. WPF Application 类介绍以及怎样修改启动方式

    因为想要修改wpf的启动方式,所以研究了下Application类,现把一些有用的属性与大家分享下: 属性: Current                  获取当前 AppDomain的 Appl ...

  9. java.util.Stack类简介

    转载自  java.util.Stack类简介 Stack是一个后进先出(last in first out,LIFO)的堆栈,在Vector类的基础上扩展5个方法而来 Deque(双端队列)比起St ...

最新文章

  1. 那些总是写“烂代码”的同学,强烈推荐你使用这款IDEA插件!
  2. 设置网格_500ETF网格设置
  3. 再谈PHP、Python与Ruby
  4. c++实现KMP算法中的Next[ ]
  5. Android Studio创建签名文件,打包apk,多渠道打包
  6. java中workbook_java使用Workbook进行excel读取和创建
  7. 苹果 5G 芯片“难产”!
  8. [渝粤教育] 西南科技大学 文学概论 在线考试复习资料
  9. Codeforces 437D The Child and Zoo(贪心+并查集)
  10. Druid连接池简单配置
  11. java 7下载地址
  12. C语言从字符串中提取数字
  13. excel替换快捷键_18个Ctrl系列快捷键,简单易上手,且实用
  14. c语言二进制转十进制大小,c语言二进制转换成十进制的方法
  15. 一根网线连接两台电脑,从而实现数据的传输
  16. 浩辰3D 软件入门技巧:装配设计
  17. 新一代iPad Pro外形泄露:方形后摄瞩目
  18. 人最大的教养,是原谅父母的不完美
  19. 神牛闪光灯TT865/V850II 860II Sony热靴口损坏,更换新热靴口
  20. 失眠睡不着觉怎么办?这些助眠好物帮助你走出失眠

热门文章

  1. 线程知识-ThreadLocal使用详解
  2. javaScript 验证码代码
  3. 社交电商这条路,也许只有腾讯能走远
  4. 3小时掌握10项产品数据分析技能
  5. 为什么产品经理面试都喜欢问注册问题?
  6. PMcaff脉脉大咖分享会 | 走出BAT!从0到1做一款自己的产品
  7. Algs4-2.2.22三向归并排序
  8. amchart折线图示例
  9. [MySQL优化案例]系列 -- 用TIMESTAMP类型取代INT和DATETIME
  10. Effective C++: noexcept