Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(5)
16lz
2021-01-23
Step 22.SQLiteCursorDriver.query 这个函数定义在frameworks/base/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java文件中:
- publicclassSQLiteDirectCursorDriverimplementsSQLiteCursorDriver{
- ......
- publicCursorquery(CursorFactoryfactory,String[]selectionArgs){
- //Compilethequery
- SQLiteQueryquery=newSQLiteQuery(mDatabase,mSql,0,selectionArgs);
- try{
- ......
- //Createthecursor
- if(factory==null){
- mCursor=newSQLiteCursor(mDatabase,this,mEditTable,query);
- }else{
- mCursor=factory.newCursor(mDatabase,this,mEditTable,query);
- }
- ......
- returnmCursor;
- }finally{
- ......
- }
- }
- ......
- }
- publicfinalclassCursorToBulkCursorAdaptorextendsBulkCursorNative
- implementsIBinder.DeathRecipient{
- ......
- publicCursorToBulkCursorAdaptor(Cursorcursor,IContentObserverobserver,StringproviderName,
- booleanallowWrite,CursorWindowwindow){
- try{
- mCursor=(CrossProcessCursor)cursor;
- if(mCursorinstanceofAbstractWindowedCursor){
- AbstractWindowedCursorwindowedCursor=(AbstractWindowedCursor)cursor;
- ......
- windowedCursor.setWindow(window);
- }else{
- ......
- }
- }catch(ClassCastExceptione){
- ......
- }
- ......
- }
- ......
- }
- publicabstractclassAbstractWindowedCursorextendsAbstractCursor
- {
- ......
- publicvoidsetWindow(CursorWindowwindow){
- ......
- mWindow=window;
- }
- ......
- protectedCursorWindowmWindow;
- }
- if(bulkCursor!=null){
- reply.writeStrongBinder(bulkCursor.asBinder());
- if(wantsCursorMetadata){
- reply.writeInt(bulkCursor.count());
- reply.writeInt(BulkCursorToCursorAdaptor.findRowIdColumnIndex(
- bulkCursor.getColumnNames()));
- }
- }else{
- ......
- }
- publicfinalclassCursorToBulkCursorAdaptorextendsBulkCursorNative
- implementsIBinder.DeathRecipient{
- ......
- publicintcount(){
- returnmCursor.getCount();
- }
- ......
- }
更多相关文章
- Android碎碎念 -- 数据存储
- Android 通过WebView 调用Js sqlite数据库
- android imageswitcher gallery 根据数据库内图片名字进行查看/
- 初学Android,五大布局对象(六)
- 数据短信接收
- Android串口开发,基于官方的android-serialport-api增加支持设置
- Android使用SQlite数据库
- Android内部数据库