首页 > 代码库 > Service到底要不要自己调用Looper.prepare()?
Service到底要不要自己调用Looper.prepare()?
====================问题描述====================
写了一个Service, 在里面启动了一个线程,于是实例化了一个Handler来处理消息。
但运行时抛出异常说不能在没有调用Looper.prepare()的线程中创建Handler。
然后我在Service的onCreate()中调用Looper.prepare(),却又被抛出异常,说一个线程中只能有一个Looper。
晕了,到底应该怎么办呢?
====================解决方案1====================
主线程本身就有一个Looper 它已经调用了prepare() 你要去你自己开启的子线程调用prepare()
====================解决方案2====================
http://my.eoe.cn/lakeside/archive/15571.html
====================解决方案3====================
这样的话,这个thread会一直在后台运行着...
====================解决方案4====================
thread 你可以不用就关掉的
====================解决方案5====================
创建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)); }
====================解决方案6====================
Service 直接在oncreate里创建handler就可以啊。谁知道你怎么写的,无码无真相。
Service到底要不要自己调用Looper.prepare()?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。