问题
在 MyHomeViewModel
中发起http网络请求动作,在google pixel3上面运行不成功,在模拟器中正常。
按谷歌官方规定的限制,是不能在UI线程中做网络操作的,会报 NetworkOnMainThread
异常。
解决
在 MyHomeFragment
的 onCreated
中执行以下代码取消限制:
//--------------------------------------------------------------------------------
StrictMode.setThreadPolicy(
ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()
)
StrictMode.setVmPolicy(
VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()
)
//--------------------------------------------------------------------------------
正规做法
需要在IO线程中执行网络操作