我正在处理服务,我在onStartCommand
中有以下代码:
try {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
Networker.get("http://google.com/");
} catch (Exception e) {
e.printStackTrace();
}
}
});
t.run();
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
即使网络代码在另一个线程中运行,我的服务仍然与NetworkOnMainThreadException
崩溃。等效的AsyncTask
代码不会导致此错误。是因为加入吗?
我这样做是因为我只需要我的服务来运行单个请求然后退出,所以我想使用上面的代码并返回START_NON_STICKY以使服务再次快速关闭。我应该做其他事吗?
答案 0 :(得分:2)
在线程上调用start()
而不是run()
来启动线程。
run()
只会在当前主题中运行您的Runnable
。