Android(安卓)网络请求不能放在主线程上面
16lz
2021-12-04
报错:
Process: com.hzy.mhyc, PID: 14493 android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1513) at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:117) at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:105) at java.net.InetAddress.getAllByName(InetAddress.java:1154) at com.android.okhttp.Dns$1.lookup(Dns.java:39)
解决此问题有两种解决的方法:
1.可以再Activity的onCreate()方法中加入这样一段代码,适用于网络请求数据量很小的话,如下
if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);}
2.启动一条子线程进行你的网络请求,推荐使用这种
// Android 4.0 之后不能在主线程中请求HTTP请求 new Thread(new Runnable(){ @Override public void run() { cachedImage = asyncImageLoader.loadDrawable(imageUrl, position); imageView.setImageDrawable(cachedImage); } }).start();
from
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- API 25 (Android(安卓)7.1.1 API) webkit.WebView——未完待续
- Android中GPRS 开关
- [Android拾怡]弱化Java方法返回值类型
- Android中隐藏状态栏和标题栏的方法
- Android微信支付回调类