问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

安卓悬浮窗可以通过子线程实现吗

发布网友 发布时间:2022-06-18 12:43

我来回答

1个回答

热心网友 时间:2024-11-29 05:35

在子线程中刷新UI有三种方法:方法一:用Handler 1、主线程中定义Handler:<pre t="code" l="java"> Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
//完成主界面更新,拿到数据
String data = (String)msg.obj;
updateWeather();
textView.setText(data);
break;
default:
break;
}
}
}; 2、子线程发消息,通知Handler完成UI更新: <pre t="code" l="java"> private void updateWeather() {
new Thread(new Runnable(){
@Override
public void run() {
//耗时操作,完成之后发送消息给Handler,完成UI更新;
mHandler.sendEmptyMessage(0);
//需要数据传递,用下面方法;
Message msg =new Message();
msg.obj = "数据";//可以是基本类型,可以是对象,可以是List、map等
mHandler.sendMessage(msg);
}
}).start();
} 方法一的Handler对象必须定义在主线程中,如果是多个类直接互相调用,就不是很方便,需要传递content对象或通过接口调用;
方法二:用Activity对象的runOnUiThread方法更新UI 在子线程中通过runOnUiThread()方法更新UI: <pre t="code" l="java"> new Thread() {
public void run() {
//这儿是耗时操作,完成之后更新UI;
runOnUiThread(new Runnable(){
@Override
public void run() {
//更新UI
imageView.setImageBitmap(bitmap);
}
});
}
}.start(); 如果在非上下文类中(Activity),可以通过传递上下文实现调用; <pre t="code" l="java"> Activity activity = (Activity) imageView.getContext();
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(bitmap);
}
}); 这种方法使用比较灵活,但如果Thread定义在其他地方,需要传递Activity对象;
方法三:View.post(Runnable r) <pre t="code" l="java"> imageView.post(new Runnable(){
@Override
public void run() {
imageView.setImageBitmap(bitmap);
}
});这种方法更简单,但需要传递要更新的View过去;
总结:UI的更新必须在主线程中完成,所以不管上述那种方法,都是将更新UI的消息发送到了主线程的消息对象,让主线程做处理;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
现在波兰的签证率高不高 去波兰如何办签证 去波兰办签证好办理吗 波兰签证好签吗 win7 多重网络 教师资格证普通话要多少级 想考教师资格证普通话必须过几级 qq影视会员SVIP和超级影视VIP的区别在哪里? 一小撮怎么造句 盛行一时怎么造句 怎么查看手机号注册了几个 4.3放烟花有什么意义 ...戚薇演过的电视剧 戚薇男人装 戚薇整容 新东方戚薇 戚薇吧... 戚薇气场太强大,随便穿搭也惹人羡慕,戚爷为何能随随便便美出天际?_百 ... 戚薇吧里你用啥做的图? 跪求 戚薇吧里比较有名的人是谁? 戚薇官方群群号 戚薇吧一天最多可以加多少经验 唐嫣 戚薇 杨幂 刘诗诗四个人的贴吧叫什么?已经成立的而且人很多的_百... 戚薇的贴吧有哪些 介绍一下戚薇吧 报警车丢了警察会怎么处理 报警汽车丢了警察会怎么处理 李氏给女孩起好名? 怀孕43天总是恶心呕吐应该怎么办 大学生因疫情放假至少七月多,返校后棉絮垫絮发霉了,怎样去除霉味儿... 怎么添加好友 通过怎么添加好友 求大神们写一个从本地上传到FTP的bat 为什么元宵放烟花 如何查询手机号以前注册过的微信的? 王鹏你妹 是什么意思? 江西师范大学瑶湖校区属于南昌市哪个区 菏泽牡丹区北苑小学和长城小学哪个好 元宵节为什么要放烟火 东方红1200六缸电喷最近难启动? 玉柴六缸电喷发动机油嘴校过之后按正常程序装车为什么发动不了... 日野六缸电喷发动机飞车什么原因? 电喷玉柴六缸发动机上止点怎么找? 康明斯六缸电喷发动机动力不足到底出什么问题 电喷柴油机六缸一起拉缸什么原因造成? 六缸电喷发动机打不着车怎么办 一张银行卡能绑定多少个呀? 一个银行卡能不能绑两个? 一张银行卡可以绑定几个 一张银行卡可以绑定几个?如何设置只能绑定一个? 一张信用卡可以绑定几个 一张银行卡可以同时绑定两个吗? 王鹏你妹 是误操作还是炒作? 求真相 为什么元宵节放礼花