MENU

kotlin在viewModel发起网络请求

August 12, 2024 • 移动端

问题

MyHomeViewModel中发起http网络请求动作,在google pixel3上面运行不成功,在模拟器中正常。
按谷歌官方规定的限制,是不能在UI线程中做网络操作的,会报 NetworkOnMainThread异常。

解决

MyHomeFragmentonCreated中执行以下代码取消限制:

//--------------------------------------------------------------------------------
StrictMode.setThreadPolicy(
    ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build()
)
StrictMode.setVmPolicy(
    VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build()
)
//--------------------------------------------------------------------------------

正规做法

需要在IO线程中执行网络操作