天津响应式网站建设制作,济南手机网站建设专业定制,前端开发培训机构推荐,陕西住房城乡住房建设厅网站Android的Handler和AsyncTask#xff0c;可以避免阻塞主线程(UI线程)#xff0c;且UI的更新只能在主线程中完成#xff0c;因此异步处理是不可避免的。AsyncTask#xff0c;它使创建需要与用户界面交互的长时间运行的任务变得更简单。不需要借助线程和Handler即可实现。获取…Android的Handler和AsyncTask可以避免阻塞主线程(UI线程)且UI的更新只能在主线程中完成因此异步处理是不可避免的。AsyncTask它使创建需要与用户界面交互的长时间运行的任务变得更简单。不需要借助线程和Handler即可实现。获取网页的例子import java.io.ByteArrayOutputStream;import java.io.InputStream;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import android.os.AsyncTask;//设置三种类型参数分别为String,Integer,Stringclass PageTask extends AsyncTask {// 可变长的输入参数与AsyncTask.exucute()对应protected String doInBackground(String... params) {try {HttpClient client new DefaultHttpClient();// params[0] 代表连接的urlHttpGet get new HttpGet(params[0]);HttpResponse response client.execute(get);HttpEntity entity response.getEntity();long length entity.getContentLength();InputStream is entity.getContent();String s null;if (is ! null) {ByteArrayOutputStream baos new ByteArrayOutputStream();byte[] buf new byte[128];int ch -1;int count 0;while ((ch is.read(buf)) ! -1) {baos.write(buf, 0, ch);count ch;if (length 0) {// 如果知道响应的长度调用publishProgress()更新进度publishProgress((int) ((count / (float) length) * 100));}// 为了在模拟器中清楚地看到进度让线程休眠100msThread.sleep(100);}s new String(baos.toByteArray());}// 返回结果return s;} catch (Exception e) {e.printStackTrace();}return null;}protected void onCancelled() {super.onCancelled();}protected void onPostExecute(String result) {// 返回HTML页面的内容message.setText(result);}protected void onPreExecute() {// 任务启动可以在这里显示一个对话框这里简单处理message.setText(R.string.task_started);}protected void onProgressUpdate(Integer... values) {// 更新进度message.setText(values[0]);}}