在安卓主线程不能发送网络请求的解决办法

第一种方法:

在主线程中加入这段代码,强制在主线程执行网络请求
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}

第二种方法:

利用安卓系统自带的异步执行,将网络请求的代码加入在里面

new AsyncTask<Void, Void, Integer>(){
@Override
protected Integer doInBackground(Void... arg0) {
try{
  //发送网络请求
}catch (Exception e) {
}
return 0;
}
@Override
protected void onPostExecute(Integer result) {
  //根据结果执行代码
}
}.execute();

时间: 2024-10-14 08:50:48

在安卓主线程不能发送网络请求的解决办法的相关文章

IOS发送网络请求 心得

路线: 实例化URL (网络资源) 利用 URL 建立URLReques (网络请求) 默认是get 请求 对于post 请求 需要创建请求数据体          利用 URLConnection 发送网络请求 (建立连接) 获得结果 或者: (也就是:) URL Reques Connection  HTTP   中利用  URLReques 建立网络请求方式:  GET & POST              get 请求 是 从服务器中取            post 请求 是 往服务

Hbuilder MUI里面使用java.net.URL发送网络请求,操作cookie

1. 引入所需网络请求类: var URL = plus.android.importClass("java.net.URL"); var URLConnection = plus.android.importClass("java.net.URLConnection"); var BufferedReader = plus.android.importClass("java.io.BufferedReader"); var InputStrea

解决Android3.0之后不能在主线程中进行HTTP请求

在Android3.0以后,会发现,只要是写在主线程(就是Activity)中的HTTP请求,运行时都会报错,这是因为Android在3.0以后为了防止应用的ANR(aplication Not Response)异常. 针对此问题有两种解决的方法: 1.可以再Activity的onCreate()方法中加入这样一段代码,如下: 1 if (Build.VERSION.SDK_INT >= 11) { 2 StrictMode.setThreadPolicy(new StrictMode.Thr

android 4.0主线程訪问网络问题

在4.0下面,在主线程中訪问网络,假设请求超过6s的话,就会报ANR,那么这就会带来一个问题,假设网络慢或者请求的数据过大时,界面会卡顿,造成界面灵敏性非常差,因此网络请求一般不能放在主线程中操作,google在4.0时做了调整,一般在主线程中请求网络,就会报错,这样就使得我们这些程序猿就不得不启动子线程去网络网络了,假设4.0在主线程中操作网络报错信息例如以下: <span style="color:#ff6666;">10-19 12:14:44.656: E/Andr

Android主线程不能访问网络异常解决办法

从两个方面说下这个问题: 1. 不让访问网络的原因 2. 解决该问题的办法 不让访问网络的原因: 由于对于网络状况的不可预见性,很有可能在网络访问的时候造成阻塞,那么这样一来我们的主线程UI线程 就会出现假死的现象,产生很不好的用户体验.所以,默认的情况下如果直接在主线程中访问就报出了这个异常,名字是NetworkOnMainThreadException 解决该问题的办法 1. 独立线程 2. 异步线程AsyncTask 3. StrictMode修改默认的策略 1) 独立线程的办法 启动一个

安卓源码编译遇到的错误及解决办法

1. make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs_export_foreach.o] 错误 1 在工程根目录下,打开下面的makefile文件:源码目录 frameworks/compile/slang/Android.mk .在打开的makefile文件中按照下面更改:#local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-un

重启后“安卓正在升级,正在优化程序”的解决办法

这个现象是升级到4.2.2,再装上4.2.2的Google包以后出现的.自己安装的apps越多,每次重启后需要等待的时间就越多,因为系统会提示“正在优化1/50个应用”,一直到把所有已安装的应用都优化一遍为止.到国外论坛里问了一圈以后,发现是这两个文件在作怪: /system/framework/com.google.widevine.software.drm.odex/system/framework/com.google.widevine.software.drm.jar 试图在RE中删除,

Android4.0 主线程不能访问网络异常解决办法

从两个方面说下这个问题: 1. 不让访问网络的原因 2. 解决该问题的办法 不让访问网络的原因: 由于对于网络状况的不可预见性,很有可能在网络访问的时候造成阻塞,那么这样一来我们的主线程UI线程 就会出现假死的现象,产生很不好的用户体验.所以,默认的情况下如果直接在主线程中访问就报出了这个异常,名字是NetworkOnMainThreadException 解决该问题的办法 1. 独立线程 2. 异步线程AsyncTask 3. StrictMode修改默认的策略 1) 独立线程的办法 启动一个

【Android笔记】不能在主线程中进行网络操作

在网上看到,自己以前也曾经遇到: 1 04-26 14:36:14.663: E/AndroidRuntime(10368): android.os.NetworkOnMainThreadException 2 04-26 14:36:14.663: E/AndroidRuntime(10368): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 3 但是我在manifest里配置了