我创建了android应用程序,并使用JSON从服务器获取数据,但出现了如下错误:
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
我怎样才能解决这个问题谢谢
只需在创建方法后添加两行
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
最好使用这里提到的异步任务(AsyncTask),另一种方法是使用:
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
或这个:
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
//Your code goes here
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
});
thread.start();
在发生异常的活动中。
您必须在MainActivity类上插入两行“StrictMode”,示例如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
// JSON here
} catch (JSONException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setContentView(R.layout.activity_main);
Intent intent=new Intent(this,HomeActivity.class);
startActivity(intent);
}
}
埃伊。沙功
编辑:这个答案“解决了”这个“问题”,但它并没有真正解释它,这是重要的部分。
修改StrictMode不是一个解决方案。此外,这个异常实际上并不是程序逻辑中的错误。程序范例中的错误和异常告诉你
您不应该在主线程上执行超文本传输协议调用,因为这会导致UI冻结。正如其他一些答案所建议的,您应该将超文本传输协议调用交给AsyncTask类。
https://developer.android.com/reference/android/os/AsyncTask
更改StrictMode实际上只是告诉应用程序-不要提醒我写了糟糕的代码。它可以用于调试,或者在某些情况下,您知道自己在做什么,但通常情况下,这不是一种方法。
问题内容: 我创建了一个android应用程序,并使用从服务器获取数据,但显示以下错误: 我该如何解决此问题, 谢谢 问题答案: 您必须在MainActivity类上插入两行“ StrictMode”,示例如下: 艾克·萨康
当我在Android 2.3.6上运行这段代码时,它运行得很好。在4.0上,我得到一个StrictMode异常。从一些问题来看,似乎你不能在UI线程上进行网络操作。但我没有在UI线程上执行任何UI操作。 我是直接调用dobackground而不是执行,因为我需要检查dobackground的返回值。我想下面应该有效。 我错过了什么? 编辑:手机上未启用严格模式。
问题内容: 在过去的两个月中,我在Chrome的开发人员控制台上收到以下错误: 症状: 页面未加载。 截断的CSS和JS文件。 页面挂起。 服务器环境: 阿帕奇2.2.22 的PHP 的Ubuntu 这是在我们内部的Apache服务器上发生的。其他人都没有发生这种情况-即 我们的用户都没有遇到此问题-开发团队中的其他人也没有。 其他人正在使用完全相同的Chrome版本访问完全相同的服务器。我还尝试
问题内容: 这是我第一次使用axios,遇到错误。 使用正确的url和参数,当我检查网络请求时,确实可以从服务器中获得正确的答案,但是当我打开控制台时,我看到它没有调用回调,而是捕获了错误。 错误:网络错误堆栈跟踪:createError @ http:// localhost:3000 / static / js / bundle.js:2188:15 handleError @ http://
我正在尝试从macos上使用swift开发的应用程序连接到realm object server 当我尝试连接时,会出现“网络连接丢失”错误,但我可以从浏览器中毫无问题地打开领域服务器。。顺便说一句,这个问题最近发生了,它在几周前工作正常 这里,用户总是,错误描述是 这发生在本地服务器和一个托管在数字海洋 服务器版本1.8。3. xcode控制台日志 2018-01-15 12:46:07.077
为4.4 ti升级内核构建时,我收到一个网络接口错误。所有层都在morty分支中。该图像是核心图像极小值。 正在配置网络接口…ifup:未知地址类型“inet” 具有以下配置: 使用图层部分: 内核输出: 我有互联网使用非元ti层工作。任何提示建议都非常感谢。奥克