5

在 ICS 上,我在使用 UrlConnection 时遇到 android.os.NetworkOnMainThreadException 错误 - 即使我在运行在它自己的进程上的服务中发出此请求,并且被异步调用以通过 Messenger 完成。

更改 StrictPolicy 没有效果,我仍然得到错误。

我能做些什么?

编辑:此服务在单独的进程中运行 - 具有不同的 pid 和所有内容。

4

2 回答 2

4

根据文档,服务仍然在主线程上运行:

请注意,服务与其他应用程序对象一样,在其托管进程的主线程中运行。这意味着,如果您的服务要执行任何 CPU 密集型(例如 MP3 播放)或阻塞(例如网络)操作,它应该生成自己的线程来完成这项工作。更多信息可以在进程和线程中找到。IntentService 类可作为 Service 的标准实现使用,它有自己的线程来安排要完成的工作。

因此,对于长时间运行的任务(例如使用 UrlConnection),您应该使用IntentService 之类的东西或自己生成一个新线程。

于 2012-04-08T07:06:43.123 回答
0

在那里做网络的东西Thread。抛出此异常是为了防止一些问题,例如 UI 冻结(由于网络作业,这可能需要一些时间。)

于 2012-04-08T07:14:28.670 回答