Android中的getApplication()、getApplicationContext的区别与用法

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014665856/article/details/72354406

getApplication()

了解getApplication()方法,首先要了解Application类,Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。

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

通过源码我们可以发现,Application和Activity都继承自Context,他们都是环境上下文,只不过Application是随着我们的应用(或者包)启动的时候就存在的环境,Activity是一个界面的环境。Application是在应用一创建就初始化了,而且是在应用运行时一直存在的,那我们可以把它当做是一个全局变量来使用,可以保存一些共享的数据,或者说做一些工具类的初始化工作。在平时的开发中,有时候可能会需要一些全局数据,通常要新建一个类来继承Application,使用getApplication()用于获取Application的一个对象实例:

public class MyApplication extends Application {}

可以通过重写onCreate()方法来做一些初始化工作:

 @Override public void onCreate() {      super.onCreate();       ToastUtils.register(this);       //LeakCanary检测OOM       LeakCanary.install(this); }

最后还需要在Manifest.xml文件中做一下声明:

在获取Application时,如果是在Context的情况下可以就可以直接通过(MyApplication)getApplication()来获取。还有一种做法是在没有Context的情况下,可以通过仿照单例的做法来实现获取:

public class MyApplication extends Application {    private static MyApplication instance;}@Overridepublic void onCreate() {    super.onCreate();    instance = this;} // 获取Application    public static Context getMyApplication() {        return instance;}

getApplicationContext()

getApplicationContext() 是返回应用的上下文,也就是把Application作为Context,生命周期是整个应用,应用摧毁它才摧毁。这里要区别一下Activity的Context,Activity.this的context 返回当前Activity的上下文,及把Activity用作Context,生命周期属于Activity ,Activity 摧毁他就摧毁。

在使用上要注意:和UI相关的方法基本都不建议或者不可使用Application,只要把握住一点,凡是跟UI相关的,都应该使用Activity做为Context来处理

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. Android获取本机Mac地址及IP地址方法
  3. 获取Android状态栏的高度
  4. App应用之提交到各大市场渠道
  5. LinearLayout按下(pressed)或获取焦点(focused)时背景设置不同颜
  6. Android数据共享 sharedPreferences 的使用方法
  7. Android常用Manager
  8. Android常用Manager
  9. Android(安卓)Camera子系统之源代码View

随机推荐

  1. 在android上滚动时,列表视图的位置会发生
  2. 解决Android应用安装快完毕时提示签名冲
  3. 没有找到类“android.support.v7.interna
  4. Tumblr API Photo Post返回401(未授权)
  5. 从零开始的Android新项目2 - Gradle篇
  6. 如何在Android设备上读取CPU频率
  7. Android(监听+回调=观察者)模式从Dialog到A
  8. [置顶] android加密解密算法之3DE
  9. Android 中文件类型与MIME的匹配表
  10. 实战Andriod开发环境部署