阔别蛮久,重回博客积累自己。
关于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/>。