毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 移动平台 >> 正文

不能在没有调用Looper.prepare()的线程中创建Handler

更新时间:2014-9-19:  来源:毕业论文

写了一个Service, 在里面启动了一个线程,于是实例化了一个Handler来处理消息。
但运行时抛出异常说不能在没有调用Looper.prepare()的线程中创建Handler。

然后我在Service的onCreate()中调用Looper.prepare(),却又被抛出异常,说一个线程中只能有一个Looper。

晕了,到底应该怎么办呢?
线程本身就有一个Looper  它已经调用了prepare()   你要去你自己开启的子线程调用prepare()

thread 你可以不用就关掉的

创建Looper以后 loop了么?需要写Looper.loop();
一个Thread只可以set一个Looper,service默认是主线程,在Activity启动的时候已经loop起来了,所以会抛出异常。
 
 private static void prepare(boolean quitAllowed) {
        if (sThreadLocal.get() != null) {
            throw new RuntimeException("Only one Looper may be created per thread");
        }
        sThreadLocal.set(new Looper(quitAllowed));
    }

并不是在Service中创建Handler异常,而是因为我在这个Service中启动了一个子线程,为了这个线程能够调用Service中m_handler的m_handler.sendMessage(), 把这个m_handler传给了子线程,在子线程中记录这个句柄,结果这个子线程中异常了。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。