ContentProvider onCreate()方法及ContentProvider.getContext()需要注意
来源:互联网 发布:淘宝代付没有支付宝 编辑:程序博客网 时间:2024/05/29 13:10
今天在写代码的时候,发现在ContentProvider 中,按照如下方式:
private AppLockDao appLockDao = new AppLockDao(getContext());@Overridepublic boolean onCreate() {return true;}
在应用运行调用数据库操作后,会报java.lang.NullPointerException。开始觉得初始化放在onCreate()方法外面。 appLockDao应该会在创建Provider的时候就初始化才对啊。可是会报空指针呢?在加断点查看后发现getContext()为null。于是查看getContext()源码:
/** * Retrieves the Context this provider is running in. Only available once * {@link #onCreate} has been called -- this will return {@code null} in the * constructor. */ public final Context getContext() { return mContext; }
从注释中得知。Context只有在Provider的onCreate()中才被初始化。如果不在onCreate()方法中对上文的Dao进行初始化。而是在onCreate()方法之前。ContentProvider.getContext()获取到的值为null。所以,今后在使用ContentProvider.getContext()获取context的时候。应该都在onCreate()方法中初始化获取。而不是在onCreate()方法之前。如下:
private AppLockDao appLockDao;@Overridepublic boolean onCreate() {appLockDao = new AppLockDao(getContext());return true;}则可正常运行。
0 0
- ContentProvider onCreate()方法及ContentProvider.getContext()需要注意
- Android -- ContentProvider的使用及需要注意的点
- 是否需要覆盖ContentProvider的getType方法?
- 是否需要覆盖ContentProvider的getType方法?
- 是否需要覆盖ContentProvider的getType方法?
- ContentProvider
- ContentProvider
- ContentProvider
- ContentProvider
- contentProvider
- ContentProvider
- ContentProvider
- ContentProvider
- contentprovider
- ContentProvider
- ContentProvider
- ContentProvider
- ContentProvider
- Android dip,px,pt,sp 的区别详解
- 大数据时代
- Oracle 笔记(二) 共享池中的 查询结果高速缓存
- MATLAB实例及自我思考(3)--心形图像
- 谷歌技术"三宝"之BigTable
- ContentProvider onCreate()方法及ContentProvider.getContext()需要注意
- 如何在SharePoint中配置和自定义Content Query Web Part (二)
- CocoaPods使用
- android studio生成jar文件
- php开发之接口的使用
- 详解Block: block循环引用
- DNS解析
- LeetCode—Merge Sorted Array两个有序数组排序
- Android下pm 命令详解