在某些设备上无法在未调用Looper.prepare()的线程内创建处理程序

在某些设备上无法在未调用Looper.prepare()的线程内创建处理程序,第1张

在某些设备上无法在未调用Looper.prepare()的线程内创建处理程序

如果您的线程不在监听循环程序,您如何管理发送给处理程序的请求?

Doc说:public Handler()

API级别1中添加的默认构造函数将此处理程序与当前线程的Looper关联。如果此线程没有循环程序,则此处理程序将无法接收消息,因此将引发异常。

如果您希望辅助线程能够管理Handler,则必须调用Looper.prepare()

例:

public class MyThread extends Thread {    private Handler mHandler;    public void run() {        Looper.prepare();        mHandler = new Handler() { @Override public void handleMessage(Message msg) {     switch (msg.what) {         // manage the message     } }        };        Looper.loop();    }    public void stopLooper() {        if (Looper.myLooper()!=null) Looper.myLooper().quitSafely();    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5430920.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存