在子线程中更改主线程中的控件的信息,在子线程中用toast
一丶在子线程中不允许更改主线程中的控件的信息,也不允许在子线程中用toast,我们要更改的话
(1)消息机制:使用handler
(由主线程调用)
在主程序中Handler handler = new Handler(){
public void handleMessage(Message msg){
int type = msg.what ;//拿到msg的类型,再判断
switch (type) {
case SUCCESS:
//拿到信息
String info = (String)msg.obj ;
//
break;
case FAILED:
//拿到信息
String faild = (String)msg.obj ;
Toast.makeText(MainActivity.this, faild, 0).show() ;
break;
case ERROR:
//拿到信息
String error = (String)msg.obj ;
Toast.makeText(MainActivity.this, error, 0).show() ;
break;
}
};
};
而在子线程中要设置Message msg;
msg.what(设置类型)
msg.obj(设置内容)然后发送:handler.sendMessage(msg);
(2)常见消息处理api:
runOnUiThread(runnable): 在ui主线程中运行
playAtTime() : 在某个时间运行
playDelay(): 延时运行
例:public class MainActivity extends Activity {
private TextView tvinfo ;
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
System.out.println("接收到了消息");
tvinfo.setText((String)msg.obj) ;
};
} ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvinfo = (TextView) findViewById(R.id.tvinfo) ;
}
public void click(View view){
handler.postDelayed(new Runnable() {
@Override
public void run() {
Message msg = Message.obtain() ;
msg.obj = "哈哈哈,我改变了UI上的内容" ;
handler.sendMessage(msg) ;
}
}, 3000) ;
}
}
转载于:https://blog.51cto.com/2585211/1669879
在子线程中更改主线程中的控件的信息,在子线程中用toast相关推荐
- python主线程执行_在Django vi中的主线程中执行Python函数
我创建了Django视图"graph",目的是显示从matplotlib.pyplot模块.我编写了我的函数plot\u bubbles(返回amatplotlib.figure. ...
- C# 子线程中访问主线程中的控件
/** 要想线程操作主线程的控件,首先声明一个委托(delegate)D,* 然后实例化委托d,再然后再子线程中使用this.BeginInvoke(d),* 就可以访问主线程的控件.* */usin ...
- UnityThread子线程使用只能在主线程中调用的函数或Unity API
Unity的Socket网络编程中,为了防止程序卡死,一般使用多线程来监听端口,当收到来自客户端的消息时,需要显示在界面上.但是如果直接在子线程中操作Unity的界面或物体会报错.国外一个大神写了一个 ...
- java 主线程_Java中的主线程 - Break易站
Java 多线程 Java为多线程编程提供内置支持.多线程程序包含两个或多个可以并发运行的部分.这样的程序的每个部分称为线程,每个线程定义一个单独的执行路径. Java中的主线程 当Java程序启动时 ...
- android线程通信方式,Android 主线程和子线程通信问题
Android 如今不支持View在子线程中创建及调用其方法.假设要实现子线程内容更新之后.将结果及时反馈到主线程中,该怎样出来呢? 能够在主线程中创建Handler来实现. 这样子线程的结果.能够通 ...
- 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )
文章目录 一.判定当前线程是否是主线程 二.子线程中执行主线程方法 三.主线程中执行子线程方法 一.判定当前线程是否是主线程 在 Android 中 , 如果要判定当前线程是否是主线程 , 可以使用如 ...
- C语言:记录在主线程中停止子线程
主线程中创建一个子线程如代码: #include <stdio.h> #include <pthread.h> #include <unistd.h> #inclu ...
- 在主线程中为子线程解锁_在XP中为Google Chrome启用Vista黑色风格主题
在主线程中为子线程解锁 If you've seen the screenshots of Google Chrome on XP vs Vista, you've probably noticed ...
- 每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...
java程序在主线程中判断各个子线程状态的操作 每个子线程在队列为空时会wait等待其他线程添加新url到队列,到最后所有子线程都取不到url时也会都wait住,要在主线程中判断如果所有的子线程都是w ...
最新文章
- docker安装PostgreSQL
- Outlook 2003中各个数据存储和配置文件的存放位置
- openssl 非对称加密 RSA 加密解密以及签名验证签名
- ABAP:List中回写CheckBox的值到内表
- mac iterm2快捷键
- redis序列化_SpringBoot整合redis
- 华为云再“祭”神器!
- Startup Error: Unable to detect graphics environment
- 计算机在热处理上有何应用,计算机在热处理中的应用
- 九章算法系列(#2 Binary Search)-课堂笔记
- python优化包_Python中优化NumPy包使用性能的教程
- CCS+JS绘制星型拓扑图(关系图)
- 第十五周助教工作总结——NWNU李泓毅
- Oracle:cost耗费高的sql执行比cost耗费慢的效率快
- MobIM 使用总结
- python opencv 图片/视频 拼接
- docker swam单机启动多个springboot实例,log挂载问题
- java-net-php-python-Java沈师周边美食资源管理系统计算机毕业设计程序
- 分享 70 个你可能会用到的正则表达式
- MTK IMS框架简析(2)——IMS注册过程