AsycTask(handler的封装类)
来源:互联网 发布:顺义握奇数据怎么样 编辑:程序博客网 时间:2024/06/06 15:11
public class MainActivity extends Activity implements OnClickListener { private Button button; private TextView textView; private ImageView imageView; /** * 使用handler的封装类来实现获取网络连接(不需要开子线程) * AsyncTask<(在启动时,传递的参数类型),(在获取数据过程中,加载数据进度的类型,integer/void), 最终获取的数据的类型> * 三个参数的类型 * 第一个代表输入到任务的参数类型,也即是doInBackground()的参数类型 第二个代表处理过程中的参数类型,传入onProgressUpdate()方法的参数类型,也就是doInBackground()执行过程中的产出参数类型,通过publishProgress()发消息传递给onProgressUpdate()一般用来更新界面 第三个代表任务结束的产出类型,也就是doInBackground()的返回值类型,和onPostExecute()的参数类型 * */ AsyncTask<String, Void, String> task = new AsyncTask<String, Void, String>() { private StringBuffer sbBuffer; // 这个方法运行在子线程中 protected String doInBackground(String... params) { String path = params[0]; Log.i("myTag", "*******1111******" + path); URL url; try { url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setRequestMethod("GET"); connection.connect(); Log.i("myTag", "*******2222******"); BufferedReader bReader = new BufferedReader( new InputStreamReader(connection.getInputStream())); sbBuffer = new StringBuffer(); String dataString = null; Log.i("myTag", "*************"); while ((dataString = bReader.readLine()) != null) { Log.i("myTag", "******3333*******"); sbBuffer.append(dataString); Log.i("myTag", "*******44444******"); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return sbBuffer.toString(); } // 下面这三个方法都是运行在主线程中 /** * 此方法运行在主线程中,当任务执行时,此方法第一个被调用,通常做初始化操作 * * 在执行耗时操作之前做一些准备工作(eg:弹窗),因为这个方法会首先执行 * */ protected void onPreExecute() { super.onPreExecute(); } /** * 运行在主线程中,当任务执行完毕时,回调此方法 参数:doInBackground方法执行后返回的结果 * */ protected void onPostExecute(String result) { super.onPostExecute(result); //textView.setText(result); } }; AsyncTask<String, Void, Bitmap> task2 = new AsyncTask<String, Void, Bitmap>() { private Bitmap bitmap; /** * 运行在子线程中,进行耗时操作 参数一:是一个可变参数,指定数据的url,此参数类型由AsyncTask的泛型一决定 * 返回值:将获取的数据返回给onPostExecute(Void result)方法 * */ protected Bitmap doInBackground(String... params) { String path = params[0]; try { URL url = new URL(path); try { HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setRequestMethod("GET"); connection.connect(); bitmap = BitmapFactory.decodeStream(connection .getInputStream()); } catch (IOException e) { e.printStackTrace(); } } catch (MalformedURLException e) { e.printStackTrace(); } return bitmap; } /** * 此方法运行在主线程中,当任务执行时此方法第一个被调用,通常做一些初始化操作 * */ protected void onPreExecute() { super.onPreExecute(); } /** * 运行在主线程中,当任务执行完毕时,回调此方法 * * 这个方法参数的类型由doInBackground方法的返回值类型决定 * */ protected void onPostExecute(Bitmap result) { super.onPostExecute(result); imageView.setImageBitmap(result); } protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } }; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); textView = (TextView) findViewById(R.id.textView1); imageView = (ImageView) findViewById(R.id.imageView1); button.setOnClickListener(MainActivity.this); } public void onClick(View v) { switch (R.id.button1) { case R.id.button1: String path = "http://v.juhe.cn/toutiao/index?type=yule&key=c8fe066ae002d20891fbc48a1783a1ee"; task.execute(path); String path2 = "http://p4.so.qhmsg.com/t010a5748577f3d4e3e.jpg"; task2.execute(path2); break; } }}
0 0
- AsycTask(handler的封装类)
- AsycTask----MyAsycTask类
- AsycTask
- Android 多线程handler,runnable,asyctask使用
- Handler 的高级封装
- Thread、AsycTask、IntentService的比较
- Thread、AsycTask、IntentService的比较
- 对Handler的一点封装
- 对Handler的一点封装
- AsycTask源码解读以及遇到的问题
- Handler优化以及SharedPreferences工具类的封装
- android-封装一个加载处理的handler类
- Handler处理HTTP请求的封装
- Handler的正确使用,软引用封装
- Thread、AsycTask、IntentService的使用场景与特点
- AsycTask------MainActivity
- 利用Handler实现网络数据下载Json并转换成实体类的封装
- RxAndroid 进行封装实现替代Handler的方案
- 用Android Studio签名打包signature versions v1 v2
- 音频文件pcm转换wav
- 求两个数的最大公约数
- linux+ubuntu:ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件
- 公司入网--光猫路由设置以及注意事项
- AsycTask(handler的封装类)
- win10 切换IP配置脚本
- Android 用户行为收集之 GoogleAnalytics
- the descriptor is not a socket
- 第六周:[leetcode] 多思路解 169.Majority Element
- python语言 笔记一
- C语言之动态数组
- iBET Live Casinos Extended Rebate 0.75% Bonus(iBET, iBET Live Casinos, iBET Malaysia Online Casino,
- swift使用CocoaPods导入三方库