NetworkOnMainThreadException

NetworkOnMainThreadException

创建了一个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();
} });

10-07 20:06