Application类

每次应用程序运行时,应用程序的Application类都保持实例化状态(都会持有该Application实例)。与Activity不同的是,配置改变并不会导致应用程序重启。在应用程序内部,通过扩展Application类,可以完成以下三项工作:

1. 对Android运行时(接收到)广播的应用程序级别事件(如低内存事件广播)作出相应;

2. 在应用程序组件之间传递对象(应用程序内部的多个Activity之间,或其他组件之间);

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

当在Manifest中注册了Application实现以后,它会在创建应用个程序进程的时候得到实例化。Application的实现在本质上是单态的,并且应该作为单态进行实现,以便提供对其方法和成员变量的访问。

如何使用Application?如何自定义Applicaton类?

自定义的Application类需要使用单例模式被创建,并在Manifest文件中指定该自定义的类。

在Manifest文件中指定该自定义Application类:

    <application
android:name=".DemoApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize|keyboard"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

此时,应用程序在启动时,Application的实现将会被实例化。

在使用时,创建Application实例,部分代码如下:

public class DemoApplication extends Application {
private static final String TAG = DemoApplication.class.getSimpleName();
// DemoApplication使用单例模式使用
private static volatile DemoApplication singletonInstance;
public static DemoApplication getInstance() {
return singletonInstance;
}
@Override
public void onCreate() {
super.onCreate();
LogUtil.d(TAG, "onCreate running...");
singletonInstance = this;
}

创建新的状态变量和全局变量,以便从应用个程序组件中进行访问:

    /**
* <功能描述> 获取全局的状态变量
*
* @return void [返回类型说明]
*/
private void getGlobalStateValue() {
}
/**
* <功能描述> 设置全局的状态变量
*
* @return void [返回类型说明]
*/
private void setGlobalStateValue() {
}

以上方法用于维护应用程序状态或实现共享资源,但是一种松散耦合的设计。

Application类中的其他方法有什么作用?

Application类为应用程序的创建和终止、低可用内存和配置改变提供了事件处理程序。通过覆写方法实现,应用程序行为。

    @Override
public void onCreate() {
// 创建应用程序时调用,用于实例化应用程序单例,创建和实例化应用程序状态变量或共享资源
super.onCreate();
LogUtil.d(TAG, "onCreate running...");
singletonInstance = this;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// 配置改变时,应用程序不会被终止和重启,而是回调方法
super.onConfigurationChanged(newConfig);
LogUtil.d(TAG, "onConfigurationChanged running...");
}
@Override
public void onLowMemory() {
// 可用于清空缓存或者释放不必要的资源
super.onLowMemory();
}
@Override
public void onTrimMemory(int level) {
// API 13被引入,Android系统认为需要减少应用程序内存开销时调用
super.onTrimMemory(level);
}

应用程序在启动时,会默认启动一个Activity,但这个Activity必须符合一定的规范:

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

该Activity被应用程序启动器使用,必须包含一个监听MAIN动作和LAUNCHER分类的intent-filter。

Android中的Application类在应用程序中的应用的更多相关文章

  1. WPF中的Application类。

    原文:WPF中的Application类. Application对象用的名称空间是system.windows 1.手动创建Application对象步骤. 1.1).把项目中的App.Xaml文件 ...

  2. Android(java)学习笔记120:Android中的Application类用法

    1.简介 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型:而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是 ...

  3. Android(java)学习笔记61:Android中的 Application类用法

    1. 简介 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型:而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就 ...

  4. Android之布局Application类

    转载:https://blog.csdn.net/pi9nc/article/details/11200969 一 Application源码描述 * Base class for maintaini ...

  5. 转-Android 之 使用File类在SD卡中读取数据文件

    如果需要在程序中使用sdcard进行数据的存储,那么需要在AndroidMainfset.xml文件中 进行权限的配置: Java代码:   <!-- 在sd中创建和删除文件的权限 --> ...

  6. 实体类在Windows程序中的高级应用--------------------》》心境是一种境界。

    一.事务 我们在大家学到这,或多或少对事务都有一些理解了.今天的我也对事务有了更深一层的理解对我来说,我想与大家一起分享一下. 解析: 1.ADO.NET提供了事务处理功能 2.C#中开启事务 3.在 ...

  7. 使用Java8中的Optional类来消除代码中的null检查

    简介 Optional类是Java 8新增的一个类,Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException). —— 每个 Java 程序员都非常了解的异常 ...

  8. 如何将OpenCV中的Mat类绑定为OpenGL中的纹理

    https://blog.csdn.net/TTTTzTTTT/article/details/53456324 如果要调用外接的USB摄像头获取图像通常使用OpenCV来调用,如何调用摄像头请参考本 ...

  9. Android输出日志Log类并保存到文件中

    android.util.Log常用的方法有以下5个: Log.v() Log.d() Log.i() Log.w() 以及 Log.e().根据首字母分别对应VERBOSE,DEBUG,INFO,W ...

随机推荐

  1. python之路day03--数据类型分析,转换,索引切片,str常用操作方法

    数据类型整体分析 int :用于计算bool:True False 用户判断str:少量数据的存储 list:列表 储存大量数据 上亿数据[1,2,3,'zzy',[aa]] 元组:只读列表(1,23 ...

  2. echarts 修改y轴name的样式

    option = {    xAxis: {        type: 'category',        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sa ...

  3. ComboBox下拉列表框

    属性:DropDownStyle(下拉.可编辑等).Items(条目) 事件:SelectedIndexChanged选择项改变触发 Items内容:总经理.副总经理.财务部 DropDownStyl ...

  4. [拓展Bsgs] Clever - Y

    题目链接 Clever - Y 题意 有同余方程 \(X^Y \equiv K\ (mod\ Z)\),给定\(X\),\(Z\),\(K\),求\(Y\). 解法 如题,是拓展 \(Bsgs\) 板 ...

  5. 20175209 《Java程序设计》第五周学习总结

    20175209 <Java程序设计>第五周学习总结 一.教材知识点总结 1.接口的定义 接口声明:关键字interface 接口体:public static final 修饰常量,pu ...

  6. Django-ContentType的使用

    一.神器ContentType 如果 继续增加课程 价格策略表还得增加字段 这样django自带一个contentType 帮助我们解决表之间的依赖关系: 1.从settings文件可以看到原生就支持 ...

  7. CentOS Linux安装python3

    本文的方法是在CentOS上新装了python3,如果本机安装了python2则保留,因为可能有程序依赖目前的python2环境,比如yum!!!!! 一.安装python3.7 1. 安装依赖环境 ...

  8. 机器学习之正则化【L1 & L2】

    前言 L1.L2在机器学习方向有两种含义:一是L1范数.L2范数的损失函数,二是L1.L2正则化 L1范数.L2范数损失函数 L1范数损失函数: L2范数损失函数: L1.L2分别对应损失函数中的绝对 ...

  9. Hbase 元数据一致性检查(转)

    最近在学习HBase先关的知识,顺便做一下笔记,以加深知识的了解和掌握. Hbase常用工具 文件检测修复工具 hbase hbck -help 常用选项: -details 显示所有region检查 ...

  10. [Android] Android 类似今日头条顶部的TabLayout 滑动标签栏 效果

    APP市场中大多数新闻App都有导航菜单,导航菜单是一组标签的集合,在新闻客户端中,每个标签标示一个新闻类别,对应下面ViewPager控件的一个分页面,今日头条, 网易新闻等. 本文主要讲的是用:T ...