Android培训之Android开发应用获取同步信息
2016-03-02 14:56:23
605浏览
几乎所有Android开发应用程序都会使用互联网获取信息或者同步数据:如果读者之前开发过应用程序,可能会有很多方法实现建立网络连接并在加载数据时显示一个进度动画的功能。
一.使用AsyncTask
AsyncTask是Android用于处理线程的类,通过该类,开发者可以很容易地把代码逻辑从一个线程移到另外一个线程。
“对于单线程模型,谨记两个原则:不要阻塞UI线程;确保仅在UI线程中访问Android UI控件”。
AsyncTask可以很容易地满足上述两个原则一因此,你学会了如何使用AsyncTask类,然后开始在各处代码中使用该类。不管uI有多复杂,也不管解析大数据耗时多久,AsyncTask总是常伴你左右。你很早就完成了工作任务,然后对着公司里的iOS开发者嘲笑道:“Android比iOS容易多啦!我可以早早完成工作:你们好好享受晚上加班的乐趣吧,果粉们!”
可惜,好景不长。你发现,当AsyncTask执行时转动设备,应用程序会崩溃。虽然这个问题很难解决,但是你总算想了个笨方法暂时应付过去了:后来,你发现应用程序运行一段时间后还是会崩溃,崩溃的原因是AsyncTask支持的并发任务的数量有限。当尝试解决第二个缺陷的时候,你发现很多继承自AsyncTask的内部类充斥着Activity,看起来你的Activity被这些类“污染”了。很长时间,你都在思考哪里出了问题。
如果
Android开发者打算使用AsyncTask,一定要慎重考虑。使用AsyncTask的唯一理由是:后台任务比较简单或者你不依赖于其执行结果。接下来,我们分析另外一种方法。
二.使用Service
第二种方法是使用Service类。使用Service可以避免很多问题,但同时也引入了其他问题。下面的关注列表会经常提醒我使用Service是否合适:
口与Activity交互
口决定什么时候以及如何启动Service
口运行时需要检查连接状态
口持久化数据
这个方法引入的问题主要是由系统的灵活性造成的:例如,开发者可以通过不同方式与Activity交互。Activity是否应该绑定到Service?是否需要使用Handler?是否需要通过Intent交互?是否需要使用数据库共享信息?存在太多不确定性问题,但是每个问题的答案都是“视情况而定”。
建议对于Android培训感兴趣的读者,可以先观看扣丁学堂关于Android开发教程视频,在看过真实的讲师授课后,再来选择扣丁学堂是否真正适合自己。
查看更多关于“Android培训资讯”的相关文章>>
标签: