封装工具类:
1.耗时操作消息发送与接收封装到一个方法中。
2.handler接收消息数据后,使用回调方法赋值。
代码如下:封装工具类
public class DownLoadContent { private ProgressDialog dialog; private static final int code = 1; public DownLoadContent(Context context){ dialog = new ProgressDialog(context); dialog.setTitle("提示"); dialog.setMessage("正在加载中"); } public void download(final String path,final DownloadCallback callback){ final Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); // TODO Auto-generated method stub byte[] by = (byte[]) msg.obj; callback.loadContent(by); if(msg.what == code){ dialog.dismiss(); } } }; class myRunnable implements Runnable{ @Override public void run() { // TODO Auto-generated method stub HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(path); try { HttpResponse response = httpClient.execute(httpPost); if(response.getStatusLine().getStatusCode() == 200){ byte[] result = EntityUtils.toByteArray(response.getEntity()); Message msg = Message.obtain(); msg.obj = result; msg.what = code; handler.sendMessage(msg); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ httpClient.getConnectionManager().shutdown(); } } } new Thread(new myRunnable()).start(); dialog.show(); } //回调方法 public interface DownloadCallback{ public void loadContent(byte[] result); } }
代码如下:Activity调用回调方法更新UI
public class MainActivity extends Activity { private Button button; private ImageView imageView; private final String image_path = "http://imgstatic.baidu.com/img/image/shouye/qichepaoche0822.jpg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button1); imageView = (ImageView)findViewById(R.id.imageView1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub DownLoadContent content = new DownLoadContent(MainActivity.this); content.download(image_path, new DownloadCallback() { @Override public void loadContent(byte[] result) { // TODO Auto-generated method stub Bitmap bitmap = BitmapFactory.decodeByteArray(result, 0, result.length); imageView.setImageBitmap(bitmap); } }); } }); } }
相关推荐
OkHttpDemo 对OkHttp进行简单的封装,基本实现简单的网络post请求,进行Gson处理,直接返回Bean。文件上传支持多文件和参数一起提交,还有文件下载,都支持进度在UI线程返回
之前写过支付宝app支付的支付的...一定要确定回调地址的写的是否指到是你写回调验证的那个放里面,别到时候在回头找错误的时候,抓耳挠腮.. 找到支付宝封装的验签类,rsaCheckV1(这个也是在app2.0接口里面) 这是支付宝已经
首先明确Android之所以有Handler和AsyncTask 都是为了不阻塞主线程(UI线程) 且UI的更新只能在主线程中完成 因此异步处理是不可避免的 Android为了降低这个开发难度 提供了AsyncTask AsyncTask就是一个封装过的...
把webservice请求进一步封装,支持回调接口,只需改动或者完全不改就可以轻松访问WebService
Ajax存在问题就是在异步情况下无法控制什么时候完成记录显示,本人根据回调方法封装了个类,能够将回调方法用参数方式指定,使ajax调用结束后调用回调方法,吧内容传回。ajaxSubmitToDivCallback(显示内容div,提交...
对okhttputils回调封装
钉钉应用配置事件订阅回调接口,基于thinkphp5的小demo,php版本不得高于7.0,基于钉钉官方提供的DingCallbackCrypto工具类,进行二次封装。
回调函数是应用程序参与操作系统运行的一个非常重要的接口,在DirectX Play 开 发过程中,经常需要使用到回调函数,直接使用回调函数显得复杂麻烦。介绍了用C + + 完成回 调函数的封装的方法,使回调函数的处理变得容易...
以回调函数的方式实现简单的串口助手功能,并把相应接口函数形成独立工程动态库。app工程以静态调用的方式调用接口动态库。两个独立的完成的vc工程。
因Android Studio下整体项目太大,此文件仅包含核心代码,核心...4. 引入线程池,并引入内存缓存功能,并对外部调用封装了接口,简化调用过程 参考:http://www.eoeandroid.com/thread-210082-1-1.html?_dsign=1b202888
hiredis的c++封装, 线程安全, 提供对键值对、队列、散列、集合结构的读写
自己封装的线程类,可实现启动,暂停,退出线程功能,经过本人验证,非常好用。
一个很好用的tcp/ip类库 多线程+异步 封装得很好,使用时请添加到项目中去。
所有接口均使用异步回调的方式处理,内部实现使用Windows下性能最高的IOCP完成端口网络模型,并很好地处理了多线程安全和同步问题。 线程创建和事件信号量等地方用到了MFC的类,如果项目不支持MFC,可以把这些地方...
用delphi封装的调用回调函数的DLL
WinInet Http 异步封装类 异步:避免线程安全问题。提供上传下载文件方法
简单Http封装异步模式代码。
安卓开发为了方便管理或者后续维护扩展,将网络模块独立出来,从而也提高开发效率,利用到多线程,线程池实现异步请求。
BroadcastReceiver通过接口回调更新界面,BroadcastReceiver不写在Activity里面,便于代码的封装,更加便于阅读