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"> & ...
随机推荐
- linux下搭建SVN服务器完全手册-很强大!!!!!
系统环境 RHEL5.4最小化安装(关iptables,关selinux) + ssh + yum 一,安装必须的软件包. yum install subversion ( ...
- 转: js快速分享代码
这是一款简单易用的文章分享工具,您只需将下面的html代码拷贝到模板中就可以实现文章快速分享功能.如果您想分享你的博客.个人网站或者企业网站等等,下面是两款不错的分享工具,值得拥有! 1. [html ...
- TodoList开发笔记 – Part Ⅱ
上一节给出了应用的两个主要UML类图,应用采用的技术也给出了,这一节开始实际设计编码 一.应用公开的方法 其实就几个的方法而已 1.代办事项的CRUD 2.代办事项归类目录的CRUD 3.代表事项“已 ...
- SpringMVC源码
SpringMVC源码分析系列 说到java的mvc框架,struts2和springmvc想必大家都知道,struts2的设计基本上完全脱离了Servlet容器,而springmvc是依托着Serv ...
- CSS绘制无图片的气泡对话框
<div class="qipao_contianer"> <div class="qipao_content yj3" ...
- MVC ValidationAttribute 服务器端自定义验证
MVC ValidationAttribute 服务器端自定义验证 客户端验证 上文只说了客户端的自定义验证,这样对于用户的输入还是不够可靠,用户完全可以绕过我们定义的客户端验证.所以仅有客户端的验证 ...
- IOS UI 第四篇:基本UI
ViewController 应用 再第一个XIB页面创建另一个XIB页面,并且通过按钮调用它 - (IBAction)GoSecond:(id)sender { secondVie ...
- Web Api的安全性
Web Api的安全性 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这一篇文章我们主要来探讨一下Web Api的安全性,到目前为止所有的 ...
- IIS发布网站,浏览网站时候,出现 试图加载格式不正确的程序。
异常来自HRESULT:0x8007000B 缘由:在64位操作系统下IIS发布32位的项目,报“项目依赖的dll无法读取,试图加载格式不正确的程序”错误. 原因:程序集之间的通讯要么全是64位环境下 ...
- oracle数据库管理--对象、角色相关查询
1.数据字典: 记录了数据库的系统信息,它是只读表和视图的集合,数据字典的所有用户者为sys用户.用户只能在数据字典上执行查询操作(select语句),而其维护与修改是由系统自动完成的.数据字 ...