【发布时间】:2016-09-05 12:56:38
【问题描述】:
我正在尝试使用似乎需要在我的服务中创建处理程序的 SDK。
出现一条错误消息,说如果线程没有调用Looper.prepare(),我无法创建处理程序,所以我调用Looper.prepare(),这个问题就消失了。
但是,这个服务需要在一段时间后启动一个活动,而这个Looper.prepare() 似乎在搞乱它,因为第一个 UI 函数崩溃说它不能从非 UI 线程调用。
我对为什么会发生这种情况有点困惑,而且我对线程和弯针的研究对我没有帮助。我明白了为什么如果线程上不存在 looper 我们不能创建处理程序,但不明白为什么创建 looper 会阻止我之后使用 ui 线程。
下面是我的简化代码:
public class MyService extends Service implement SDKCallback{
...
void callSDK(){
Looper.prepare();
SDK.run(); //Does thing I don't know about
}
@Override
SDKCallback(){
startActivity(new Intent(this, MyActivity.class);
}
}
【问题讨论】:
-
你能把代码贴出来吗?
-
刚刚做了,但我不确定它是否有帮助。问题确实来自处理程序之间的交互; looper 和 ui 线程。
标签: android user-interface looper