AndroidManifest清单文件中已经声明Application的name,但getApplicationContext()获取的时候仍然空指针异常
2017-06-16 14:59
405 查看
public class MyApplication extends Application { private static MyApplication instance; /** * 初始化 */ @Override public void onCreate() { super.onCreate(); } /** * 单例获取application实例 */ public static MyApplication getInstance() { synchronized (MyApplication .class) { if (instance == null) { instance = new MyApplication (); } return instance; } } }
清单文件:
<application android:name="com.xxx.xxx.app.MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" tools:replace="icon,label" android:supportsRtl="true" android:theme="@style/AppTheme">
当需要使用到MyApplication的时候,比如在某个activity中使用Context context = MyApplication .getInstance().getApplicationContext(); 也比如使用百度地图sdk的时候初始化SDKInitializer.initialize(getApplicationContext()); 报空指针
这时候获取到的context为空
因为在其他模块第一次使用的时候执行 instance = new MyApplication (); 因为Application在清单文件中注册之后系统默认是单例模式的,而使用 new MyApplication (); 并不会执行onCreate方法, 所以Application本身是和原先的系统生成的Application不是同一个pid,所以会报空,而对于Application的正确写法是:
public class MyApplication extends Application { private static MyApplication instance; /** * 初始化 */ @Override public void onCreate() { super.onCreate(); instance = this; } /** * 单例获取application实例 * @return MyApplication */ public static MyApplication getInstance() { return instance; } }
相关文章推荐
- android中获取context的多种方法的区别(this,getbascontext(),getApplicationcontext())
- Android 获取AndroidManifest.xml文件versionCode,versionName属性
- applicationContext.xml文件中的异常: Attribute : name The name of the property, following JavaBean naming c
- Android 获取AndroidManifest 文件 versionCode和versionName属性
- android获取app当前的渠道号或者获取清单文件application中的任意meta-data(以友盟的多渠道打包为例)
- Android 获取AndroidManifest.xml文件versionCode,versionName属性
- Android 获取AndroidManifest.xml文件versionCode,versionName属性 .
- android中获取context的多种方法的区别(this,getbascontext(),getApplicationcontext())
- AndroidManifest.xml清单文件详解--application节点
- android中获取context的多种方法的区别(this,getbasecontext(),getApplicationcontext())
- 如何获取清单文件AndroidManifest中meta_data元素的信息
- ClassLoader.getResourceAsStream(name);获取配置文件的方法
- Android 中 getApplicationContext()、this、getApplication()之间的区别
- android, 删除SD卡音乐文件。通过getContentResolver读取音乐文件,可以获取到一个完整的路径,直接new File(这括号写获取的路径).delete();
- Java类获取Spring的applicationContext.xml文件中的bean
- android之getApplicationContext
- android manifest.xml 中 application下 android:name属性的作用
- Android 中 getApplicationContext()、this、getApplication()之间的区别 .
- android this,getApplication(),getApplicationContext()的区别
- 清单文件The AndroidManifest.xml File