Anlyze ConversationList In Qcom
The first UI In MMS is ConversationList
Main flow of loading data
1:在ConversationList的onCreate()函数被调用时,会新建一个异步加载handler, new ThreadListQueryHandler,这个handler里面的新建thread进行异步查询的功能。
2:onStart()调用时会调用到startAsyncQuery()函数,这个函数顾名思义就是与数据查询相关。
3:跳转到了conversation的 StartQuery()函数中, 这里有设置uri,projection,selection,uri= sAllThreadsUri= Threads.CONTENT_URI.buildUpon().appendQueryParameter("simple", "true").build() projection =ALL_THREADS_PROJECTION(这里几乎返回了thread table中的所有列),selection = null, dort =Conversations.DEFAULT_SORT_ORDER。这里调用的是传进来的handler.StartQuery()。而这个handler就是我们在onCreate()中创建的ThreadListQueryHandler。
PS: 查看AsyncQueryHandler的时候注意理清thread,handler,looper和messagequeue的关系。
4:我们继续跟踪在AsyncQueryHandler中st