Android中的SQLiteDatabase,ContentProvider和ContentResolver

阔别蛮久,重回博客积累自己。

关于Transaction,查阅其他人的讲解说是这样的:默认是不用手动设置,当有大量数据操作时需要手动设置:

如xxxx操作为5000条数据处理

SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//开启事务
db.beginTransaction();
try{
            //批量处理操作
            //xxxx操作
            //设置事务标志为成功,当结束事务时就会提交事务
            db.setTransactionSuccessful();
}
catch(Exception e){
 
}
 
finally{
           //结束事务
          db.endTransaction();
}
cursor在每次操作后要关闭,db在application中的finalize中关闭

关于ContentProvider与CointentResolver

ContentProvider中的getType方法查阅资料后,据我理解是给ContentResolver作校验用的。provider和resolver要想进行数据互动要有预先约定的uri,

provider在getType()中根据不同uri返回不同的MIME字符串。resolver的getType()中可以传入uri返回这个字符串。MIME字符串可以用于启动应用。如打开一个视频文件,

我们可以选择打开的应用。能打开哪种文件就是在manifest中Activity的Data下声明MIME字符串。如

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <data android:mimeType="video/mpeg"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

另外provider可以选择在manifest声明permission。<permission/>代表声明权限。在声明provider下的readPermission或者writePermission可以使用已声明的权限。

一旦provider声明了权限,使用resolver的application就要声明对应的权限,用<uses-permission/>。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值