我有一个设置为在android 3.2上运行的android项目,我有一个在其主线程中使用网络的库项目,由sdk版本的3,2抛出android.os.NetworkOnMainThreadException。通过下面的SDK版本Honeycomb在主线程中使用网络是可以的:http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html。
为了解决这个问题,我尝试将我的库项目的SDK版本设置为1.6,但仍然存在相同的错误!这是Android的正常行为吗?不是吗?向后兼容性怎么样?
编辑:我知道我不应该在主线程中执行网络请求,但它不是我的代码,而是我必须使用的库。我不能/不想触摸库的代码,它是属于其他公司的商业API。
编辑2:我当然试图获得该库的更新/固定版本,但这是另一个问题。所以我现在的问题是,有没有办法用较旧的SDK编译/运行库?
答案 0 :(得分:2)
我认为最重要的是,如果你尝试在3.0+设备/模拟器上运行它,它将无法工作。您需要使用AsyncTask。
答案 1 :(得分:1)
您正在使用的库项目不应在主线程上执行网络操作。 Android正在抛出这个异常,因为这样做非常糟糕。
你不应该绕过NetworkOnMainThreadException
;使用AsyncTask
或Thread
来执行网络操作。
阅读此blog post以获取更多信息。