一丶在子线程中不允许更改主线程中的控件的信息,也不允许在子线程中用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相关推荐

  1. python主线程执行_在Django vi中的主线程中执行Python函数

    我创建了Django视图"graph",目的是显示从matplotlib.pyplot模块.我编写了我的函数plot\u bubbles(返回amatplotlib.figure. ...

  2. C# 子线程中访问主线程中的控件

    /** 要想线程操作主线程的控件,首先声明一个委托(delegate)D,* 然后实例化委托d,再然后再子线程中使用this.BeginInvoke(d),* 就可以访问主线程的控件.* */usin ...

  3. UnityThread子线程使用只能在主线程中调用的函数或Unity API

    Unity的Socket网络编程中,为了防止程序卡死,一般使用多线程来监听端口,当收到来自客户端的消息时,需要显示在界面上.但是如果直接在子线程中操作Unity的界面或物体会报错.国外一个大神写了一个 ...

  4. java 主线程_Java中的主线程 - Break易站

    Java 多线程 Java为多线程编程提供内置支持.多线程程序包含两个或多个可以并发运行的部分.这样的程序的每个部分称为线程,每个线程定义一个单独的执行路径. Java中的主线程 当Java程序启动时 ...

  5. android线程通信方式,Android 主线程和子线程通信问题

    Android 如今不支持View在子线程中创建及调用其方法.假设要实现子线程内容更新之后.将结果及时反馈到主线程中,该怎样出来呢? 能够在主线程中创建Handler来实现. 这样子线程的结果.能够通 ...

  6. 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )

    文章目录 一.判定当前线程是否是主线程 二.子线程中执行主线程方法 三.主线程中执行子线程方法 一.判定当前线程是否是主线程 在 Android 中 , 如果要判定当前线程是否是主线程 , 可以使用如 ...

  7. C语言:记录在主线程中停止子线程

    主线程中创建一个子线程如代码: #include <stdio.h> #include <pthread.h> #include <unistd.h> #inclu ...

  8. 在主线程中为子线程解锁_在XP中为Google Chrome启用Vista黑色风格主题

    在主线程中为子线程解锁 If you've seen the screenshots of Google Chrome on XP vs Vista, you've probably noticed ...

  9. 每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...

    java程序在主线程中判断各个子线程状态的操作 每个子线程在队列为空时会wait等待其他线程添加新url到队列,到最后所有子线程都取不到url时也会都wait住,要在主线程中判断如果所有的子线程都是w ...

最新文章

  1. docker安装PostgreSQL
  2. Outlook 2003中各个数据存储和配置文件的存放位置
  3. openssl 非对称加密 RSA 加密解密以及签名验证签名
  4. ABAP:List中回写CheckBox的值到内表
  5. mac iterm2快捷键
  6. redis序列化_SpringBoot整合redis
  7. 华为云再“祭”神器!
  8. Startup Error: Unable to detect graphics environment
  9. 计算机在热处理上有何应用,计算机在热处理中的应用
  10. 九章算法系列(#2 Binary Search)-课堂笔记
  11. python优化包_Python中优化NumPy包使用性能的教程
  12. CCS+JS绘制星型拓扑图(关系图)
  13. 第十五周助教工作总结——NWNU李泓毅
  14. Oracle:cost耗费高的sql执行比cost耗费慢的效率快
  15. MobIM 使用总结
  16. python opencv 图片/视频 拼接
  17. docker swam单机启动多个springboot实例,log挂载问题
  18. java-net-php-python-Java沈师周边美食资源管理系统计算机毕业设计程序
  19. 分享 70 个你可能会用到的正则表达式
  20. MTK IMS框架简析(2)——IMS注册过程

热门文章

  1. 算法学习——动态规划之装载问题
  2. Ubuntu android 开发配置
  3. 错误记录,找不到sqlite dll
  4. 我的程序员偶像在哪里?
  5. 手把手教你学Python:一文看懂字符串基本操作
  6. FreeRTOS任务延时函数
  7. 为什么阿里巴巴不允许使用Executors?
  8. 如何让程序员变得没朋友
  9. 你以为熬个3年工作经验就是Java高级开发了?
  10. 刘朋:程序员如何练就领导力