android两种方式获取AsyncTask返回值
获取AsyncTask返回值,在Activity中使用。
引用链接:https://www.oschina.net/code/snippet_725438_49858#72630
[1].[代码] [Java]代码 跳至 [1] [2] [3] [4]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
布局文件:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/im1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <ImageView android:id="@+id/im2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /></LinearLayout> |
[2].[代码] [Java]代码 跳至 [1] [2] [3] [4]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
2.第一种,回调方法方式:package com.androidwallpaper;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import android.net.Uri;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.app.WallpaperManager;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener{ ImageView im1; ImageView im2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); im1 = (ImageView) findViewById(R.id.im1); im2 = (ImageView) findViewById(R.id.im2); try { final ImageViewAsyncTask task = new ImageViewAsyncTask("http://static.oschina.net/uploads/ad/new_banner_one_ronglianyun_WrqUs.png"); task.setOnDataFinishedListener(new OnDataFinishedListener() { @Override public void onDataSuccessfully(Object data) { try { im1.setImageBitmap((Bitmap) data); } catch (Exception e) { e.printStackTrace(); } } @Override public void onDataFailed() { Toast.makeText(MainActivity.this, "加载失败!", Toast.LENGTH_SHORT).show(); } }); task.execute(); } catch (Exception e) { e.printStackTrace(); } } class ImageViewAsyncTask extends AsyncTask<String, Integer, Bitmap> { String mUrl; OnDataFinishedListener onDataFinishedListener; public ImageViewAsyncTask(String url){ this.mUrl = url; } public void setOnDataFinishedListener( OnDataFinishedListener onDataFinishedListener) { this.onDataFinishedListener = onDataFinishedListener; } @Override protected Bitmap doInBackground(String... params) { InputStream ins = null; Bitmap bitmap = null; try { URL url = new URL(mUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){ ins = connection.getInputStream(); bitmap = BitmapFactory.decodeStream(ins); return bitmap; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(ins!=null){ try { ins.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } @Override protected void onPreExecute() { super.onPreExecute(); progressBar.setVisibility(View.VISIBLE); } @Override protected void onPostExecute(Bitmap result) { progressBar.setVisibility(View.GONE); if(result!=null){ onDataFinishedListener.onDataSuccessfully(result); }else{ onDataFinishedListener.onDataFailed(); } } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); } }} |
[3].[代码] [Java]代码 跳至 [1] [2] [3] [4]
|
1
2
3
4
5
6
7
8
|
回调接口:public interface OnDataFinishedListener { public void onDataSuccessfully(Object data); public void onDataFailed(); } |
[4].[代码] [Java]代码 跳至 [1] [2] [3] [4]
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
第二种:使用handler:1.修改ImageViewAsyncTask:public class ImageViewAsyncTask extends AsyncTask<String, Integer, Bitmap> { String mUrl; Handler mHandler; public ImageViewAsyncTask(String url,Handler handler){ this.mUrl = url; this.mHandler = handler; } @Override protected Bitmap doInBackground(String... params) { InputStream ins = null; Bitmap bitmap = null; try { URL url = new URL(mUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){ ins = connection.getInputStream(); bitmap = BitmapFactory.decodeStream(ins); return bitmap; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(ins!=null){ try { ins.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(Bitmap result) { super.onPostExecute(result); Message msg = mHandler.obtainMessage(); if(result!=null){ msg.what = 1; msg.obj = result; }else{ msg.what = 2; } mHandler.sendMessage(msg); } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); } }2.调用方式:ImageViewAsyncTask task2 = new ImageViewAsyncTask("http://static.oschina.net/uploads/ad/new_banner_one_ronglianyun_WrqUs.png", handler); task2.execute();Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: Bitmap bitmap = (Bitmap) msg.obj; im2.setImageBitmap(bitmap); break; default: break; } } }; |
android两种方式获取AsyncTask返回值的更多相关文章
- Android 两种方式实现类似水波扩散效果
原文链接 https://mp.weixin.qq.com/s/M19tp_ShOO6esKdozi7Nlg 两种方式实现类似水波扩散效果,先上图为敬 自定义view实现 动画实现 自定义view实现 ...
- C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换
使用gmtime函数或localtime函数将time_t类型的时间日期转换为structtm类型: 使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年.月.日 ...
- .Net反射-两种方式获取Enum中的值
public enum EJobType { 客服 = , 业务员 = , 财务 = , 经理 = } Type jobType = typeof(EJobType); 方式1: Array enum ...
- android手机两种方式获取IP地址
1.使用WIFI 首先设置用户权限 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"& ...
- **CI两种方式查询所返回的结果数量
区别:第一个是有条件的:第二个没有条件 $this->db->count_all_results(); 允许你获得某个特定的Active Record查询所返回的结果数量.可以使用Acti ...
- Android Activity返回键控制的两种方式
Android Activity返回键监听的两种方式 1.覆写Activity的OnBackPressed方法 官方解释: Called when the activity has detected ...
- 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用
当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直 ...
- drupal7 覆写node-type.tpl.php获取字段值的两种方式
字段的机读名称为:field_publication_date <!-- 下面两种方式都可以获取node字段的值--> 出版时间: <?php print date('Y-m-d', ...
- JavaWeb后台从input表单获取文本值的两种方式
JavaWeb后台从input表单获取文本值的两种方式 #### index.html <!DOCTYPE html> <html lang="en"> & ...
随机推荐
- codeblock 设置背景颜色
今天觉得codeblock看着刺眼,想了想,能不能跟vs利用dark背景一样可以设置一个舒服的背景.于是就开始各种点击,各种摸索了. 1. 背景和各种颜色设置 不妨先说下vs中的设置是:工具(Tool ...
- Ubuntu下开发环境搭建
安装基础开发包,主要gcc,g++等 sudo apt-get install build-essential 未完待续
- javascript this指向
this对象是什么: this对象是与运行时函数执行的上下文绑定的.这句话其实已经很好的解释了this对象,为我们确定this指明了方向!但是需要注意的是:由于javascript具有动态性(解释执行 ...
- OpenGl绘制螺旋线
/** * 缓冲区工具类 */public class BufferUtil { /** * 将浮点数组转换成字节缓冲区 */ public static ByteBuffer arr2ByteB ...
- C#程序的157个建议
编写高质量代码改善C#程序的157个建议——导航开篇 前言 由于最近工作重心的转移,原来和几个同事一起开发的项目也已经上线了,而新项目就是在现有的项目基础上进行优化延伸扩展.打个比方,现在已经上线 ...
- Jquery框架
现在Jquery框架对于开发人员基本上是无人不知,无人不晓了,用起来十分的方便,特别是选择器十分强大,提高了我们的开发速度.但是好多人也只是停留在了会用的基础上,我个人觉得会用一个框架不算什么,只能说 ...
- 包图Package
[UML]UML系列——包图Package 系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) ...
- 在 go/golang语言中使用 google Protocol Buffer
怎么在go语言中实用google protocol Buffer呢? 现在的潮流趋势就是一键搞定,跟ubuntu安装软件一样 go get code.google.com/p/goprotobuf/{ ...
- 安装linux版qq,安装二进制包编译器,安装mysql-5.6.11,删除已安装或安装失败的mysql-5.6.11,简单mysql练习题
上午[root@localhost ~]# ./test3.sh dev1^C[root@localhost ~]# groupadd dev1[root@localhost ~]# vim /etc ...
- escape,encodeURI,encodeURIComponent函数比较
escape,encodeURI,encodeURIComponent函数比较 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数 ...