接着昨天的初始化listview方法,今天重点介绍initNewsListView方法
该部分代码主要是为首页的咨询页面准备数据以及初始化相关点击事件的操作,接下来进入重点介绍的加载数据的逻辑
我们可以看到该方法开启了一个线程,在该线程的run方法中,获取NewsList对象
该列表数据有可能从网络中获取,也有可能从缓存中获取
接着,回到异步加载数据的主方法,涉及到了handler、message相关的知识点,这里将将要加载的数据放在message中,然后handler将此message通过sendMessage方法放入一个消息队列中,接着通过handleMessage方法处理该消息,这样做的目的可以避免在主线程中加载数据最后导致ANR的发生;在Android开发中,始终牢记一点,那就是不要在主线程中做大量耗时的工作,给你的应用一个良好的用户体验,关于更多handler的讲解,请看这里
最后来看看此handler的handlemessage方法
这里主要逻辑是拿到加载数据后UI的相关出处理
综上,这就是异步加载数据的主要逻辑