Android Application类的使用

来源:互联网 发布:python串口编程实例 编辑:程序博客网 时间:2024/04/30 12:32

1.什么是Application?

源码中描述的大概意思是:Application类是保存全局变量的基类,我们可以自定义一个类继承Application,然后在AndroidManifest.xml的< application>标签下指定其名称,这样应用在启动的时候,它就被初始化了.

如,我们自己定义了一个CrashApplication.java,在AndroidManifest.xml中配置如下:

<application     android:name="com.yootoo.download.CrashApplication">    .... </application>

android系统为每一个运行的程序创建一个Application类的对象,他的生命周期和整个程序的生命周期一样长,它以单例的形式存在.

2.在Application中做什么?

在Application类中,我们通常进行一些数值传递,数据缓存,初始化一些信息的操作.

2.1 传递数据

我们在Activity中传递数据,通常以putExtra()的形式,让Intent进行携带,或者把信息加入Bundle,传递基本数据类型比较方便,但是传递复杂数据类型就比较麻烦了,还需要实现Serializable或者Parcellable接口.

其实没有必要那么麻烦,我们可以在Application中创建一个HashMap,以字符串作为索引,Object为value,这样我们的HashMap就可以存储任何类型的对象了.比如我们需要将数据从Activity1传递到Activity2,只需要在Activity1中将数据保存到HashMap中,然后将索引传递到Activity2中,就在Activity2中根据索引取到数据了.

2.2 数据缓存

比如我们有一个Activity需要从网络缓存一些数据,获取完之后,就可以缓存到Application当中,当界面设置到其他Activity在回来,就可以直接用缓存的数据了.
这里需要注意,当需要缓存一些大量数据的时候,最好cache一些SoftReference(软引用),并把这些数据缓存到本地,如果Application中不存在,从本地缓存中去查找,如果本地还不存在,去网络获取.

3.注意事项

1)不在Application的OnCreate方法中进行耗时操作,否则直接影响程序的启动时间.
2)保存了不该保存的对象,会导致内存泄漏.

参考资料:
官方文档: http://www.android-doc.com/reference/android/app/Application.html

CSDN:http://blog.csdn.net/pi9nc/article/details/11200969

0 0
原创粉丝点击