gpt4 book ai didi

android - 错误 StrictMode$AndroidBlockGuardPolicy.onNetwork

转载 作者:IT老高 更新时间:2023-10-28 12:44:51 30 4
gpt4 key购买 nike

我创建了 android 应用程序并使用 JSON 从服务器获取数据,但出现以下错误:

android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)

我该如何解决这个问题
谢谢

最佳答案

您必须在 MainActivity 类中插入 2 行“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);
}
}

Aey.Sakon

编辑:这个答案“解决”了“问题”,但并没有真正解释它,这是重要的部分。

修改 StrictMode 不是修复方法。以及这个异常并不是程序逻辑中的真正错误。这是程序范式中的错误,异常告诉你,

您不应该在主线程上执行 http 调用,因为它会导致 UI 卡住。正如其他一些答案所暗示的那样,您应该将 http 调用交给 AsyncTask 类。

https://developer.android.com/reference/android/os/AsyncTask

更改 StrictMode 真的只是告诉应用程序 - 不要让我想起我写了糟糕的代码。它可以用于调试,或者在某些情况下您知道自己在做什么,但通常这不是要走的路。

关于android - 错误 StrictMode$AndroidBlockGuardPolicy.onNetwork,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22395417/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com