1

在模拟器(Android 4.0.3 / API 15)上运行我的代码时出现此异常。打开流时,它会抛出异常。错误消息是null

try {
    String adress        = "xxx";
    URL url              = new URL(adress);
    InputSource source   = new InputSource(url.openStream());

} catch (Exception e) {
    (new TextView).setText("Error: "+e.getMessage());
}

URL 仍在使用模拟器(在浏览器中)。

我已经清理了项目。

也允许互联网连接:

<uses-permission android:name="android.permission.INTERNET" />

例外 :android.os.NetworkOnMainThreadException

4

2 回答 2

4

永远不要在主 ( UI ) 线程上运行网络操作。

线程用于:

  • 与用户交互。
  • 渲染 UI 组件。

对其进行任何长时间的操作都可能使您的应用程序因ANR消息而关闭。

看看以下内容:

您可以轻松地使用 aAsyncTask或 aThread来执行您的网络操作。

这是关于 android 中线程和后台工作的精彩教程:链接

于 2013-03-28T15:30:39.620 回答
0

为我工作:

清单.xml:

<uses-permission android:name="android.permission.INTERNET" />

.java:

private static boolean DEVELOPER_MODE = true;
...
protected void onCreate(Bundle savedInstanceState) {

     if (DEVELOPER_MODE) {
         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                 .detectDiskReads()
                 .detectDiskWrites()
                 .detectNetwork()   // or .detectAll() for all detectable problems
                 .penaltyLog()
                 .build());
         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                 .detectLeakedSqlLiteObjects()
                 .detectLeakedClosableObjects()
                 .penaltyLog()
                 .penaltyDeath()
                 .build());
     }  
...

希望能帮助到你。

另见:http: //developer.android.com/reference/android/os/StrictMode.html

于 2013-05-11T23:04:20.443 回答