intent服务中的静态块抛出networkonmainthreadeexception异常



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

IntentSrevice在单独的线程上运行时,throw NetworkOnMainThreadException如何运行?

请提前帮助和感谢。

这是因为你正在主线程上进行网络操作,而这在Android 3.0及以上版本是不允许的。即使它是在一个服务中,服务也在UI线程上运行,除非你在另一个线程中启动它们或在其中创建一个线程。

你可以通过在主UI线程之外的服务中运行任务来解决这个问题,通过使用thread或AsyncTask

尝试在onStartCommand()中创建一个新线程

或者你可以这样做…

new Handler().post(new Runnable() { 
@Override public void run() {
 getData(); 
} });

您应该在OnHandleIntent()中完成与网络相关的工作,因为该方法在单独的线程上运行。

你放置网络相关工作的地方现在在主线程上运行。

最新更新