创建了一个 IntentService
,我在其中创建了一个静态 block ,我在其中进行了一些与网络相关的工作,它给出了 NetworkOnMainThreadException
:
代码 如下所示:
public class XService extends IntentService {
static {
//Net related work
//on executing this gives NetworkOnMainThreadException
}
@Override
protected void onHandleIntent(Intent intent) {
//Doing my work here
}
}
当 IntentSrevice
在单独的线程上运行时,如何抛出 NetworkOnMainThreadException
?
请帮助并提前致谢。
最佳答案
出现这种情况是因为你在主线程上进行网络操作,而这在Android 3.0及以上版本是不允许的。即使它在服务中,服务也会在 UI 线程上运行,除非您专门在另一个线程中启动它们或在其中创建一个线程。
您可以通过使用线程或 AsyncTask
在主 UI 线程之外的服务中运行任务来解决此问题。
尝试在 onStartCommand()
中创建一个新线程
或者你可以做类似...
new Handler().post(new Runnable() {
@Override public void run() {
getData();
} });
关于android - Intent 服务中的静态 block 抛出 NetworkOnMainThreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32626577/