android开发之重写Application类
在android应用开发中,重写Application也算是比较常见的,以前开发的一些程序太过于简单,都不要重写这个类,但是在真正的商业开发中,重写Application类几乎是必做的。
为什么要重写Application?
1.处理全局变量,在整个应用程序范围内共享数据
2.管理Activity,当应用程序退出时,销毁所有的Activity
3.初始化应用程序的配置信息
4.当系统内存不足时应用能够做出合理的响应
…..
继承了Application之后,一定要在清单文件中声明,即指明Application节点的name属性即可:
<application
android:name="com.example.apptest.MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
重写的Application类:
/**
* 注意,在重写方法时必须调用超类的事件处理程序
* @author 王松
* @date 2015年7月30日
*/
public class MyApplication extends Application {
private String globalVar;
private MyApplication instance;
private List<Activity> activities;
/**
* 单例模式
* @return
*/
public MyApplication getInstance(){
if(instance == null)
return new MyApplication();
return instance;
}
/**
* 添加activity
* @param a
*/
public void addActivity(Activity a){
activities.add(a);
}
/**
* 遍历所有Activity并finish
*/
public void finishActivity() {
for (Activity activity : activities) {
if (activity != null && !activity.isFinishing()) {
activity.finish();
}
}
}
public String getGlobalVar() {
return globalVar;
}
public void setGlobalVar(String globalVar) {
this.globalVar = globalVar;
}
/**
* 在创建应用程序时调用,可以重写这个方法来实例化应用程序单态,以及创建和实例化任何应用
* 程序状态变量或共享资源
*/
@Override
public void onCreate() {
super.onCreate();
activities = new LinkedList<Activity>();
}
/**
* 作为onLowMemory的一个特定于应用程序的替代选择,在android4.0时引入,
* 在程序运行时决定当前应用程序应该尝试减少其内存开销时(通常在它进入后台时)调用
* 它包含一个level参数,用于提供请求的上下文
*/
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
}
/**
* 与Activity不同,在配置改变时,应用程序对象不会被终止和重启。
* 如果应用程序使用的值依赖于特定的配置,则重写这个方法来重新加载这些值,或者在应用程序级别处理这些值的改变
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
/**
* 当系统处于资源匮乏时,具有良好行为的应用程序可以释放额外的内存。
* 这个方法一般只会在后台进程已经终止,但是前台应用程序仍然缺少内存时调用。
* 我们可以重写这个程序来清空缓存或者释放不必要的资源
*/
@Override
public void onLowMemory() {
super.onLowMemory();
}
}
关键地方都已用注释说明。
那么怎么在Activity中使用这个类呢?
MyApplication mp = (MyApplication) getApplication();
mp.setGlobalVar("张三");
就是这么简单,不过大多情况下我们都会用Map来存储全局变量,这里为了简单,就直接使用了String。
版权声明:本文为博主原创文章,未经博主允许不得转载。若有错误地方,还望批评指正,不胜感激。
android开发之重写Application类的更多相关文章
- Android开发调试日志工具类[支持保存到SD卡]
直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.i ...
- wemall app商城源码android开发MD5加密工具类
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...
- Android开发-API指南-<application>
<application> 英文原文:http://developer.android.com/guide/topics/manifest/application-element.html ...
- Android开发实现HttpClient工具类
在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.你可以把HttpClient想 ...
- Android开发技巧——PagerAdapter实现类的封装
ViewPager是android的support库中的一个控件,也是一个在许多应用开发中都用得比较多的控件.目前为止,对ViewPager的使用,我一般是用ViewPager + Fragment的 ...
- android开发之网络棋牌类在线游戏开发心得(服务器端、Java) 好文章值得收藏
标签: android服务器 2013-10-09 17:28 3618人阅读 评论(0) 收藏 举报 分类: android(11) 转自:http://blog.csdn.net/bromon/a ...
- Android开发_字符串处理类-TextUtils类
对于字符串处理Android为我们提供了一个简单实用的TextUtils类,如果处理比较简单的内容不用去思考正则表达式不妨试试这个在android.text.TextUtils的类,主要的功能如下: ...
- android开发必备日志打印工具类
今天给大家献上一款好用的日志打印工具.大家在平时的开发中用的最多的可能就是Log.i("",""),Log.e("","" ...
- android开发SD卡工具类(一)
SD卡工具类整理: package com.gzcivil.utils; import java.io.File; import java.io.FileInputStream; import jav ...
随机推荐
- Gson把json串转换成java实体对象
Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...
- [转贴]Windows下gSoap交叉编译环境的搭建
本人直接就用过gSoap,它是用以C/C++写webservice的利器 交叉编译的时候,有两个很关键的程序: soapcpp2.exe wsdl2h.exe ...
- Android如何在一个线性布局里完美显示两个listview啊?
复写一个listView ,在你布局文件中使用此view: <ScrollView android:layout_width="fill_parent" android:la ...
- Leetcode解题思想总结篇:双指针
Leetcode解题思想总结篇:双指针 1概念 双指针:快慢指针. 快指针在每一步走的步长要比慢指针一步走的步长要多.快指针通常的步速是慢指针的2倍. 在循环中的指针移动通常为: faster = f ...
- 制作LOGO的35种方法
A logo design is really a graphical element (ideogram, symbol, emblem, icon, sign) that, along with ...
- 17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 得到复制master binary log 位置:
17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 得到复制master binary log 位置: 你需要master ...
- WCF - net.pipe vs. net.tcp vs. http Bindings
WCF - net.pipe vs. net.tcp vs. http Bindings 问题: I'm new to WCF and would like to know the differenc ...
- linux 复制文件时,报cp: omitting directory `XXX'
今天在用linux命令进行文件复制时omitting cp -i BBS /opt/workspace/apache-tomcat-6,参数用的是 -i),所以也不太熟悉,原来,还有子目录文件,而是必 ...
- SQL Server 字段状态判断语句
selct newName=case when 条件 then '否' else '是' end from tableName
- yml文件数据的简洁表达方法(Hashes to OpenStruct)
通过ruby编写测试脚本的时候,我还是喜欢采用yml来管理测试数据,就像以前的文章(Selenium WebDriver + Grid2 + RSpec之旅(五))提到的一样,但是在引用yml中的数据 ...