创建了一个IntentService
,在其中创建了一个静态块,在其中进行一些与网络相关的工作,并在该块上提供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
}
}
throw NetworkOnMainThreadException
在单独的线程上运行时,该IntentSrevice
怎么能?请帮助并提前致谢。
最佳答案
发生这种情况是因为您正在主线程上执行网络操作,而在Android 3.0及更高版本上则不允许这样做。即使它在服务中,服务也要在UI线程上运行,除非您专门在另一个线程中启动它们或在其中创建线程。
您可以通过使用Thread或AsyncTask
在主UI线程之外的服务中运行任务来解决此问题。
尝试在onStartCommand()
中创建一个新线程
或者您可以做类似...
new Handler().post(new Runnable() {
@Override public void run() {
getData();
} });