加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

处理Android中Can't create handle inside thread问题

发布时间:2021-11-24 20:34:59 所属栏目:教程 来源:互联网
导读:解决Android中Cant create handle inside thread问题,在 new Thread() { public void run() { ..... } }.start(); 如果在里面创建一个Dialog的话会出现这样的错误,所以改用message形式的 private void showStatusDialogThread() { mHandler = new Handler(

解决Android中Can't create handle inside thread问题,在
 
new Thread()  
{  
    public void run()  
    {  
             .....  
     }  
}.start();  
如果在里面创建一个Dialog的话会出现这样的错误,所以改用message形式的
private void showStatusDialogThread() {  
        mHandler = new Handler() {  
            @Override  
            public void handleMessage(Message msg) {  
                if (status != null) {  
                    if (status.equals(SyncStatus.Success)) {  
                        // 更新本地保存的lastSyncTime为当前时间   
                        UpdateLocalLastSyncTime(System.currentTimeMillis());  
                    }  
                    showStatusDialog(status);  
                    mHandler.removeCallbacks(mRunnable);  
                }  
                super.handleMessage(msg);  
            }  
        };  
        mRunnable = new Runnable() {  
            @Override  
            public void run() {  
                mHandler.postDelayed(this, 100);  
                Message message = new Message();  
                mHandler.sendMessage(message);  
            }  
        };  
        mHandler.post(mRunnable);  
    }  
其中
showStatusDialog(status);  
是定义Dialog的方法。
这种发送message的方式模型如下
 
{  
        mHandler = new Handler() {  
            @Override  
            public void handleMessage(Message msg) {  
                //执行的具体方法,例如创建Dialog,计数等   
                super.handleMessage(msg);  
            }  
        };  
        mRunnable = new Runnable() {  
            @Override  
            public void run() {  
                //设置延迟时间间隔   
                mHandler.postDelayed(this, 100);  
                Message message = new Message();  
                mHandler.sendMessage(message);  
            }  
        };  
        mHandler.post(mRunnable);  
    }  
然后在其他某处调用
mHandler.removeCallbacks(mRunnable);  
就可取消此message的发送。
其实这里发送message也是一种线程,相当于一个定时触发某一事件一样。

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读