• 如何在子线程中使用Toast和更新UI


    因为没一个Looper处理消息循环,所以子线程中无法使用Toast

    方法:

    Looper.prepare();     
     Toast.makeText(getActivity(),"刷到底啦",Toast.LENGTH_SHORT).show();  
     Looper.loop();

    在子线程中更新UI

    第一种:

    new Handler(context.getMainLooper()).post(new Runnable() {
     
        @Override
        public void run() {
            // 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui
     
        }
    });

    第二种:

    // 如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程
    // 因为runOnUiThread是Activity中的方法,Context是它的父类,所以要转换成Activity对象才能使用
    ((Activity) context).runOnUiThread(new Runnable() {
     
        @Override
        public void run() {
            // 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui
        }
    });

    第三种就是handler机制了

  • 相关阅读:
    抽象类和接口
    truncate,delete和drop的区别
    PLSQL乱码问题
    Linux
    myEclipse闪退
    Java 中 Synchronized 的使用
    工厂模式
    Java中的File,IO流
    jQuery的学习
    C++中的标准模板库STL
  • 原文地址:https://www.cnblogs.com/DASOU/p/4253044.html
Copyright © 2020-2023  润新知