快速修复NetworkOnMainThreadException

Ale*_*x F 8 android network-programming networkonmainthread

我需要执行第三方开源程序,它抛出NetworkOnMainThreadException.根据SDK参考,仅针对Honeycomb SDK或更高版本的应用程序进行此操作.针对早期SDK版本的应用程序可以在其主要事件循环线程上进行联网.

在第一阶段,我只想运行程序,而不更改源.所以,我改变了AndroidManifesr.xml中的行:

    android:targetSdkVersion="15"

至:

    android:targetSdkVersion="10"

但是,这没有用,程序仍然会抛出NetworkOnMainThreadException.我怎样才能使这个工作?我正在尝试在Android Emulation Google API上执行该程序(级别16).

Rag*_*ood 19

您可以将其更改为:

android:targetSdkVersion="9"
Run Code Online (Sandbox Code Playgroud)

API 10对应蜂窝,而9是姜饼.此行为仅在API 10及更高版本中可见.

但是,我会建议不要这样做.相反,您应该将任何长时间运行的操作或可能长时间运行的操作移动到后台线程中,例如AsyncTask.

您还可以尝试使用以下方法设置严格模式:

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
Run Code Online (Sandbox Code Playgroud)