use*_*828 2 multithreading android android-loadermanager android-handler
我正在使用,AsyncQueryHandler
并onQueryComplete
在查询完成后调用它.
我的问题:onQueryComplete
在UI线程上调用?
我知道它在后台进行查询.
在哪里AsyncQueryHandler
实例化是否重要?(如果在UI线程中实例化将意味着onQueryComplete
将在UI线程上调用).
是
onQueryComplete
呼吁UI线程?
它在调用线程上调用 ...所以你启动它的线程AsyncQueryHandler
.
在哪里
AsyncQueryHandler
实例化是否重要?
AsyncQueryHandler
是一个子类,Handler
它执行异步查询(或插入,更新,删除)ContentResolver
并将结果返回给调用线程.Handler
允许s与主UI线程以外的线程相关联,查询/事务也是如此ContentResolver
.因此,您也应该被允许AsyncQueryHandler
从单独的线程调用.
话虽这么说,这样做可能不是你想要的几个原因:
当您AsyncQueryHandler
在单独的线程上实例化时,所有后续回调都将返回到该调用线程.这通常不是您想要的,因为它不提供与主UI线程同步的简单方法,主线程负责创建布局和接收触摸事件.
您已经在一个单独的线程上,因此ContentResolver
对于UI线程的调用已经是异步的.
顺便说一句,文档AsyncQueryHandler
中没有提到关于这些要点的任何内容,但是你可以通过阅读源代码来解决大部分问题.Handler
(其直接基类)的文档也解释了它背后的理论.
归档时间: |
|
查看次数: |
1905 次 |
最近记录: |