我NetworkOnMainThreadException
在Service
课堂上得到了一个,这本质上是没有意义的,因为据我所知,服务是后台进程。
在 Service 方法中,我正在调用静态帮助方法来下载数据。我也在使用 DefaultHttpClient 。
这里发生了什么?
我NetworkOnMainThreadException
在Service
课堂上得到了一个,这本质上是没有意义的,因为据我所知,服务是后台进程。
在 Service 方法中,我正在调用静态帮助方法来下载数据。我也在使用 DefaultHttpClient 。
这里发生了什么?
onStartCommand()
在Service
. 尝试使用IntentService,或者使用Service
( Handler
/ Runnable
, AsyncTask
) 中的任何其他线程方法。
服务回调都在主线程上运行,也就是 UI 线程。如果你想做后台工作,要么启动一个线程,要么使用 IntentService 的 onHandleIntent(Intent i)。
当应用程序尝试在其主线程上执行网络操作时引发的异常。
这仅针对面向 Honeycomb SDK 或更高版本的应用程序抛出。允许以早期 SDK 版本为目标的应用程序在其主事件循环线程上进行网络连接,但非常不鼓励这样做。
http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
我只是通过使用这个来解决这个问题:
public int onStartCommand(Intent intent, int flags, int startId) {
RefreshDBAsync task = new RefreshDBAsync(this);
task.execute();
return START_STICKY;
}
RefreshDBAsync 每 5 分钟向服务器发出一次请求