- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我创建了 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/
这个问题在这里已经有了答案: How can I fix 'android.os.NetworkOnMainThreadException'? (66 个回答) 关闭5年前。 我创建了 android
我有一个 JSON 函数在不同的 Activity 中以相同的格式正常工作,但是当我在这里运行它时,我收到错误。我已经确定了实际的 JSON 调用,该调用抛出了异常,但不知道为什么。请参阅 'JSON
当我在 Android 2.3.6 上运行这段代码时,它工作正常。在 4.0 上我得到一个 StrictMode 异常。从关于 SO 的一些问题来看,您似乎无法在 UI 线程上进行网络操作。但我没有在
我正在开发我的第一个 Android 应用程序,并且主要基于研究内置。当我尝试登录我的用户时,我得到了 android.os.NetworkOnMainThreadException错误。我在网上读到
我是一名优秀的程序员,十分优秀!