4

NetworkOnMainThreadExceptionService课堂上得到了一个,这本质上是没有意义的,因为据我所知,服务是后台进程。

在 Service 方法中,我正在调用静态帮助方法来下载数据。我也在使用 DefaultHttpClient 。

这里发生了什么?

4

4 回答 4

5

onStartCommand()Service. 尝试使用IntentService,或者使用Service( Handler/ Runnable, AsyncTask) 中的任何其他线程方法。

于 2012-02-01T15:11:43.710 回答
0

服务回调都在主线程上运行,也就是 UI 线程。如果你想做后台工作,要么启动一个线程,要么使用 IntentService 的 onHandleIntent(Intent i)。

于 2012-02-01T15:11:34.627 回答
0

当应用程序尝试在其主线程上执行网络操作时引发的异常。

这仅针对面向 Honeycomb SDK 或更高版本的应用程序抛出。允许以早期 SDK 版本为目标的应用程序在其主事件循环线程上进行网络连接,但非常不鼓励这样做。

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

于 2012-07-25T21:55:39.227 回答
0

我只是通过使用这个来解决这个问题:

public int onStartCommand(Intent intent, int flags, int startId) {

    RefreshDBAsync task = new RefreshDBAsync(this);
    task.execute();

    return START_STICKY;
}

RefreshDBAsync 每 5 分钟向服务器发出一次请求

于 2017-04-22T18:25:59.443 回答