AsyncQueryHandler 对 onQueryComplete on ui 线程的调用?( 安卓 )



我正在使用AsyncQueryHandler,一旦查询完成,它就会调用onQueryComplete

我的问题是:onQueryComplete是在UI线程上调用的吗?

我知道它在后台进行查询。

AsyncQueryHandler在哪里实例化有关系吗?(如果在UI线程中实例化,则意味着onQueryComplete将在UI线程上调用)。

是否在UI线程上调用了onQueryComplete

它是在调用线程上调用的。。。因此,您启动AsyncQueryHandler的线程。

AsyncQueryHandler在哪里实例化有关系吗?

AsyncQueryHandlerHandler的一个子类,它对ContentResolver执行异步查询(或插入、更新、删除),并将结果返回给调用线程。Handler被允许与主UI线程以外的线程相关联,对ContentResolver的查询/事务也是如此。因此,您也应该被允许从一个单独的线程调用AsyncQueryHandler

话虽如此,这样做可能不是你想要的,原因有两个:

  1. 当您在一个单独的线程上实例化AsyncQueryHandler时,所有后续回调都将返回到该调用线程。这通常不是你想要的,因为它没有提供与主UI线程同步的简单方法,主UI线程负责创建布局和接收触摸事件。

  2. 您已经在一个单独的线程上,因此对ContentResolver的调用将已经相对于UI线程异步。

顺便说一句,关于AsyncQueryHandler的文档没有提到任何关于这些点的内容,但您可以通过阅读源代码来了解其中的大部分内容。Handler(它的直接基类)的文档也解释了它背后的理论。

最新更新