AsyncQueryHandler 源码学习

原文链接

ContentProvider 的单线程执行工具类

构造函数

  • 在构造函数中需要传入 ContentResolver 对象
  • 创建一个 Thread 线程,用于线性执行 msg
  • 然后创建一个 Handler 对象(WorkerHandler)。

能处理的操作

  • Query
  • Insert
  • Update
  • Delete

执行流程

  • AsyncQueryHandler 也是一个 Handler 对象。当使用 startInsert/startUpdate 等方法时,先将 msg 发送到 WorkerHandler 的队列中,在其 handleMessage 时执行并获得结果放入 result 中,然后发送到 AsyncQueryHandler 这个 handler 的队列中。
  • AsyncQueryHandler 的 handleMessage 处理比较简单,直接将 token, cookie, args.result 作为参数传递给 onQueryComplete。

重要结构体

protected static final class WorkerArgs {
        public Uri uri;
        public Handler handler;
        public String[] projection;
        public String selection;
        public String[] selectionArgs;
        public String orderBy;
        public Object result;
        public Object cookie;
        public ContentValues values;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容