在ICS上,我在使用UrlConnection时遇到android.os.NetworkOnMainThreadException错误 - 即使我在一个运行在它自己的进程上的服务中发出此请求,并且被异步调用以通过Messenger完成。 / p>
更改StrictPolicy无效,我仍然收到错误。
我该怎么办?
编辑:此服务在一个单独的进程中运行 - 具有不同的pid和所有内容。
答案 0 :(得分:4)
请注意,服务与其他应用程序对象一样,在其托管进程的主线程中运行。这意味着,如果您的服务要进行任何CPU密集型(例如MP3播放)或阻止(例如网络)操作,它应该生成自己的线程来执行该工作。有关此内容的更多信息,请参见进程和线程。 IntentService类可用作Service的标准实现,它具有自己的线程,用于调度其工作。
因此,对于长时间运行的任务(例如使用UrlConnection),您应该使用IntentService之类的东西,或者自己生成新的线程。
答案 1 :(得分:0)
在那里Thread
进行网络搜索。抛出此异常是为了防止一些问题,例如UI冻结(因为网络作业,可能需要一些时间。)