1

说,我有一个ContentProvider(实际上不执行数据库调用)并且我想将一些附加数据(例如,调用统计信息)与光标传递给调用者:

public class SomeProvider extends ContentProvider {

    . . .      

    public Cursor query(....) {
        // I can not set extras for cursor here
        return new MyCursorImplementation(iterationData, callStats);
    }

}

在活动中,我想做:

Cursor cursor = getContentResolver().query(...);
CallStats callStats = ((MyCursorImplementation)cursor).getCallStats();

但我不能这样做,因为光标已经被包裹ContentResolver.CursorWrapperInner并被ClassCastException抛出。

使用时会非常方便AsyncTask

protected class SomeAsyncTask extends AsyncTask<Uri, Void, Cursor> {


     ...


     @Override
     protected Cursor doInBackground(Uri... uris) {
         return getContentResolver().query(uris[0], ...);
     }

     @Override
     protected void onPostExecute(Cursor cursor) {
         if (cursor != null) {
             // update view with cursor data, do other things using cursor

             CallStats callStats = ((MyCursorImplementation)cursor).getCallStats();
             // do some UI changes using call statistics
             // ...but fails here
         } 
     }

}

如何使用游标传递数据或获得与查询返回的游标完全相同的游标。或者这是不可能的?

4

0 回答 0