Android中线程通信的方式

本文介绍了Android中跨线程通信的基本原理与实现方法,包括如何使用Handler和Message进行线程间通信,以及如何利用Google提供的API来更新UI。

Android 跨线程通信

android 中是不允许在主线程中进行 网络访问等事情的因为UI如果停止响应5秒左右的话整个应用就会崩溃,到Android4.0 以后 Google强制规定,与网络相关的应用必须在子线程中调用

实现线程间通信的方法

线程间通信的方式图解
997244-20170527163241435-1839444917.png

Handler和Message 实现线程间的通信

Handler myHandler = new android.os.Handler() {
     @Override
     public void handleMessage(Message msg) {
         super.handleMessage(msg);
         Log.i(TAG, "调用UI线程");
         String temp = (String) msg.obj;
         tv_Source.setText(temp);
     }
 };
 //发送消息到handler更新UI
 android.os.Message msg = new Message();
 msg.obj = "我是要发送的信息";
 myHandler.sendMessage(msg);

使用Google封装好的API进行线程间中通信

/*
*这种方式仅仅推荐在只是更新UI的的情况下使用 
*如果想要携带是数据得话还得使用Handler和Message的方式
*使用方式:在想要更新UI时候直接使用此方法即可
*/
runOnUiThread(new Runnable() {
    @Override
    public void run() {
        iv_IMG.setImageBitmap(BitmapFactory.decodeFile(file.getAbsolutePath()));
    }
});

仅将学习的笔记分享给大家,如果错误之处还请大家指正。

转载于:https://www.cnblogs.com/slyfox/p/6913503.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值