Asynctask异步处理类的使用
来源:互联网 发布:ubuntu怎么看内存 编辑:程序博客网 时间:2024/04/28 05:35
主类
package com.example.day08_asynctask;import java.util.concurrent.ExecutionException;import android.os.Bundle;import android.R.integer;import android.app.Activity;import android.view.Menu;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends Activity {TextView tv;TextView tv2;ProgressBar pb;String key = "3ac9f31ff66b9746539472887b3799c3";// 通过get请求时的接口地址String get_path = "http://web.juhe.cn:8080/constellation/getAll?consName=狮子座&type=today&key="+ key;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = (TextView) findViewById(R.id.textView1);tv2 = (TextView) findViewById(R.id.textView2);pb = (ProgressBar) findViewById(R.id.progressBar1);// 主页提供控件,和联网地址System.out.println("new 出对象");MyAsynctask myAsynctask = new MyAsynctask(tv, pb);System.out.println("执行extcte方法");// 执行完,这里先得到执行的结果,类中在得到myAsynctask.execute(get_path);try {String string = myAsynctask.get();System.out.println("主线程得到线程结束的数据:" + string);tv2.setText("主线程的设置" + string);} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}}
线程类
package com.example.day08_asynctask;import java.io.BufferedReader;import java.io.IOException;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import android.os.AsyncTask;import android.os.SystemClock;import android.widget.ProgressBar;import android.widget.TextView;// 三个参数,1.线程执行前传入的数据类型 params 2.线程中更新的数据类型 3.线程执行后的结果类型public class MyAsynctask extends AsyncTask<String, Integer, String> {TextView tv;ProgressBar pb;String path = "";private BufferedReader br;private StringBuffer sb;private String str;public MyAsynctask(TextView tv, ProgressBar pb) {super();this.tv = tv;this.pb = pb;}// 开启后台线程@Overrideprotected String doInBackground(String... params) {System.out.println("正式开启线程,得到传来的数据" + params[0]);HttpClient httpClient = new DefaultHttpClient();HttpGet httpGet = new HttpGet(params[0]);try {HttpResponse httpResponse = httpClient.execute(httpGet);if (httpResponse.getStatusLine().getStatusCode() == 200) {HttpEntity entity = httpResponse.getEntity();str = EntityUtils.toString(entity);for (Integer i = 0; i < 100; i++) {SystemClock.sleep(200);publishProgress(i);}}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return str;}// 开始后台线程前执行@Overrideprotected void onPreExecute() {System.out.println("准备开启线程");super.onPreExecute();}@Overrideprotected void onPostExecute(String result) {System.out.println("子类线程得到结果数据:" + result);tv.setText("任务类设置的信息" + str);super.onPostExecute(result);}@Overrideprotected void onProgressUpdate(Integer... values) {System.out.println("线程执行中得到传来的数据" + values[0]);tv.setText(values[0] + "%");super.onProgressUpdate(values);}}
0 0
- Asynctask异步处理类的使用
- 异步Asynctask的使用
- AsyncTask异步处理的运用
- Android中使用AsyncTask实现简单的异步处理
- 异步消息处理机制及AsyncTask的使用
- android 异步线程AsyncTask类的使用
- AsyncTask异步任务类的使用
- 异步处理工具类:AsyncTask
- 异步处理工具类:AsyncTask
- 异步任务AsyncTask的使用
- 异步框架AsyncTask的使用
- 异步加载AsyncTask的使用
- AsyncTask异步任务的使用
- AsyncTask异步操作的使用
- AsyncTask异步任务类使用
- AsyncTask的使用方法(异步任务的处理)
- Android异步处理:AsyncTask的实现原理
- Android异步处理二:使用AsyncTask异步更新UI界面
- oracle通过exp导出dump,报错报错,EXP-00008: 遇到 ORACLE 错误 90 ORA-00904: "POLTYP": 标识符无效 EXP-00000: 导出终止失败
- 深入理解RunLoop
- 身体很重要~
- 表情识别数据
- Android启动时,白色背景上有蓝色一闪而过
- Asynctask异步处理类的使用
- NineGridLayout — 仿微信朋友圈和QQ空间的九宫格图片展示自定义控件
- mysql中int、bigint、smallint 和 tinyint的区别与长度的含义
- 操作系统的调度策略
- 6.python学习笔记:切分大型文件
- LeetCode 140. Word Break II
- 循环队列
- 第三周-Coursera/Stanford机器学习课程学习笔记-逻辑回归&概率解释以及正则化
- WDDM学习