Android访问网络的常用方式:Handler、AsyncTask简单例子(服务器端+Android端)
首先应该明白两点: 1.Android不允许在主线程(对于android来说,主线程就是UI线程)中访问网络。 2.Android不允许在一个子线程中直接去更新主线程中的UI控件。 对于问题1,可能你会说,这还不好办吗?再开一个线程不就完了?是的,你很聪明,原理也很简单。 对于问题2,就需要用到线程间通信(IPC),Android很好的将其进行了封装,也就有了今天的Handler和AsyncTask。 适用情况: AsyncTask是一个轻量级的后台异步任务类,简单、便捷。适合后台任务不太多的情况,因为每一个后台任务都要写成一个Class去继承AsyncTask,代码显得比较臃肿。否则就使用Handler吧,很强大,但对于新手来说较难掌握 使用方法: AsyncTask定义了三种泛型类型 Params,Progress和Result 。 Params 启动任务执行的输入参数,比如HTTP请求的URL。 Progress 后台任务执行的百分比。 Result 后台执行任务最终返回的结果,比如String。 最少要重写以下方法: doInBackground(Params…) 后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。在执行过程中可以调用publicProgress(Progress…