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. android appwidget service的初始化
  2. Android -- SharedPreferences保存基本数据、序列化对象、List数
  3. Android webview与js交换JSON对象数据示例
  4. android的上下文菜单---context menu
  5. Android初始化语言 (init.*.rc、init.conf文件格式)
  6. Android中Intent传递对象的两种方法(Serializable,Parcelable)
  7. 5.4 Android 的上下文菜单: Context Menu,registerForContextMen
  8. android注解初始化view

随机推荐

  1. [置顶] Android(安卓)Touch事件的分发过
  2. android 如何调用系统拨打电话的功能
  3. Java乔晓松-android中的手势识别的详解
  4. Android ContentResolver 内容解析者(解
  5. android的 UI 布局总结
  6. 基于Android的谷歌地图地理围栏功能开发
  7. 安卓知道多少
  8. 安卓开发中开关按钮ToggleButton和开关Sw
  9. Android类加载器以及与Java类加载器区别
  10. Android 动画框架详解