本篇文章记录一些Android中application类的作用,内容介绍。
Android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例 (Singleton)模式的一个类。且 == Application 对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期== 。因为它是全局唯一的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以通过 Application 来进行一些:数据传递、数据共享、数据缓存等操作
这里面的重点就是:全局唯一;可以进行数据传递,共享,缓存等操作。
重写application生命周期事件
-
public void onCreate()
在应用程序创建的时候被调用,可以实现这个这个方法来创建和实例化任何应用程序状态变量或共享资源。还可以在这个方法里面得到 Application 的单例。 -
public void onTerminate ()
当终止应用程序对象时调用,不保证一定被调用,当程序是被内核终止以便为其他应用程序释放资源,那么将不会提醒,并且不调用应用程序的对象的onTerminate方法而直接终止进程。 -
public void onLowMemory()
当系统资源匮乏的时候,我们可以在这里可以释放额外的内存, 这个方法一般只会在后台进程已经结束,但前台应用程序还是缺少内存时调用。可以重写这个方法来清空缓存或者释放不必要的资源。 -
public void onTrimMemory(int level)
当运行时决定当前应用程序应该减少其内存开销时(通常在进入后台运行的时候)调用,包含一个 level 参数,用于提供请求的上下文。 -
public void onConfigurationChanged (Configuration newConfig)
与 Activity 不同,配置改变时,应用程序对象不会被终止和重启。如果应用程序使用的值依赖于特定的配置,则重写这个方法来加载这些值,或者在应用程序级处理配置值的改变。
自定义application
用自定义的application,这样可以达到自己想要的效果。方法如下:
- 创建自定义application类,继承application类即可:
- 在AndroidManifest.xml文件中的application节点上,引用:
获得包名:
在获取application对象的时候,我们如果自己写获取对象的方法,是不需要单例的,因为application类全局只有一个,它本身就是一个单例,所以我们不需要用单例去保护它。