tyc*_*czj 14 android android-handler
我正在尝试实现,AsyncQueryHandler因为我在此链接中遇到了同样的问题,但我没有看到任何关于实现它的示例或任何内容.
我试过了
AsyncQueryHandler handler = new AsyncQueryHandler(getContentResolver());
Run Code Online (Sandbox Code Playgroud)
因为这是构造函数在文档中显示的内容,但我得到一个错误cannot instantiate the type AsyncQueryHandler,说明如何使用它呢?
Cro*_*ong 17
这很方便:
AsyncQueryHandler handler =
new AsyncQueryHandler(mActivity.getContentResolver()) {};
handler.startUpdate(-1, null, sessionUri, values, null, null);
Run Code Online (Sandbox Code Playgroud)
Nec*_*net 11
当你需要在不使用Loader的情况下进行CRUD操作异步时非常方便,所以通过从asyncquery扩展你得到的方法,如startQuery,startInsert,startUpdate和startDelete,一个简单的实现可能是:
public class CustomAsyncHandler extends AsyncQueryHandler {
private WeakReference<AsyncQueryListener> mListener;
public interface AsyncQueryListener {
void onQueryComplete(int token, Object cookie, Cursor cursor);
}
public CustomAsyncHandler(ContentResolver cr, AsyncQueryListener listener) {
super(cr);
mListener = new WeakReference<AsyncQueryListener>(listener);
}
public CustomAsyncHandler(ContentResolver cr) {
super(cr);
}
/**
* Assign the given {@link AsyncQueryListener} to receive query events from
* asynchronous calls. Will replace any existing listener.
*/
public void setQueryListener(AsyncQueryListener listener) {
mListener = new WeakReference<AsyncQueryListener>(listener);
}
/** {@inheritDoc} */
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
final AsyncQueryListener listener = mListener.get();
if (listener != null) {
listener.onQueryComplete(token, cookie, cursor);
} else if (cursor != null) {
cursor.close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在查询完成时,会创建一个额外的AsyncQueryListener接口作为回调,因为您可以创建AsyncUpdateListener,AsyncDeleteListener,AsyncInsertListener等.
| 归档时间: |
|
| 查看次数: |
12325 次 |
| 最近记录: |