android.os.NetworkOnMainThreadException:产生的原因 [英] Caused by: android.os.NetworkOnMainThreadException

查看:241
本文介绍了android.os.NetworkOnMainThreadException:产生的原因的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好观众和读者,我使用链接。每当我运行此code。在独立的包能正常工作,但每当我试图嵌入我的应用程序这个样本,得到不幸的是应用程序已经停止,只有当我点击选项卡特定的标签而调用它,和logcat的说: -

 致:android.os.NetworkOnMainThreadException
10-30 15:07:35.341:E / AndroidRuntime(732):在android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
 

请告诉我,我需要做的,使其可用于我,除了这个特殊的标签整个应用程序工作正常。

  10-30 15:07:26.770:D / dalvikvm(732):GC_FOR_ALLOC释放61K,3%的自由8035K / 8259K,暂停39MS,总46ms
    10-30 15:07:26.781:I / dalvikvm堆(732):增长堆(破片的情况下),以8.481MB为614416字节分配
    10-30 15:07:26.850:D / dalvikvm(732):GC_CONCURRENT释放1K,4%的自由8634K / 8903K,暂停27ms + 13毫秒,总71ms
    10-30 15:07:26.881:D / dalvikvm(732):GC_FOR_ALLOC释放0K,4%的自由8634K / 8903K,暂停28ms,共28ms
    10-30 15:07:26.900:I / dalvikvm堆(732):增长堆(破片的情况下),以9.798MB为1382416字节分配
    10-30 15:07:26.970:D / dalvikvm(732):GC_CONCURRENT释放0K,免费4%9984K / 10311K,暂停28ms + 5ms的,总72ms的
    10-30 15:07:27.110:D / gralloc_goldfish(732):没有GPU的仿真模拟器检测。
    10-30 15:07:30.591:D / dalvikvm(732):GC_FOR_ALLOC释放675K,免费9875K / 10695K,暂停为33ms,共62ms 8%
    10-30 15:07:30.671:D / dalvikvm(732):GC_FOR_ALLOC释放519K,免费9806K / 10695K,暂停30毫秒,31毫秒总额9%
    10-30 15:07:30.740:D / dalvikvm(732):GC_FOR_ALLOC释放310K,免费9713K / 10695K,暂停28ms,共29ms 10%
    10-30 15:07:30.751:I / dalvikvm堆(732):增长堆(破片的情况下),以10.488MB为1000016字节分配
    10-30 15:07:30.820:D / dalvikvm(732):GC_CONCURRENT释放< 1K,免费10690K / 11719K 9%,暂停25ms的+ 5毫秒,总74ms
    10-30 15:07:30.911:D / dalvikvm(732):GC_FOR_ALLOC释放0K,免费10690K / 11719K,暂停36ms,共36ms 9%
    10-30 15:07:30.931:I / dalvikvm堆(732):增长堆(破片的情况下),以12.633MB为2250016字节分配
    10-30 15:07:31.030:D / dalvikvm(732):GC_CONCURRENT释放0K,免费8%12887K / 13959K,暂停为32ms + 16ms的,总93ms
    10-30 15:07:31.211:D / dalvikvm(732):GC_FOR_ALLOC释放3683K,30%的自由10314K / 14599K,暂停为35ms,共38ms
    10-30 15:07:31.211:I / dalvikvm堆(732):增长堆(破片的情况下),以11.439MB为1382416字节分配
    10-30 15:07:31.360:D / dalvikvm(732):GC_CONCURRENT释放< 1K,免费11663K / 14599K 21%,暂停81ms + 5ms的,总144ms
    10-30 15:07:31.551:D / dalvikvm(732):GC_FOR_ALLOC释放2555K,32%免费9936K / 14599K,暂停为32ms,共38ms
    10-30 15:07:31.561:I / dalvikvm堆(732):增长堆(破片的情况下),以10.706MB为1000016字节分配
    10-30 15:07:31.701:D / dalvikvm(732):GC_CONCURRENT释放1K,免费的26%10912K / 14599K,暂停78ms + 16ms的,总139ms
    10-30 15:07:31.770:D / dalvikvm(732):GC_FOR_ALLOC释放0K,免费10912K / 14599K,暂停31毫秒,31毫秒总量26%
    10-30 15:07:31.770:I / dalvikvm堆(732):增长堆(破片的情况下),以12.850MB为2250016字节分配
    10-30 15:07:31.871:D / dalvikvm(732):GC_CONCURRENT释放0K,免费11%13109K / 14599K,暂停29ms + 6ms的,总91ms
    10-30 15:07:32.060:D / dalvikvm(732):GC_FOR_ALLOC释放1134K,11%免费13102K / 14599K,暂停为35ms,总39MS
    10-30 15:07:32.070:I / dalvikvm堆(732):增长堆(破片的情况下),以14.162MB为1382416字节分配
    10-30 15:07:32.150:D / dalvikvm(732):GC_FOR_ALLOC释放< 1K,免费14451K / 16007K 10%,暂停36ms,共36ms
    10-30 15:07:32.161:I /编舞(732):跳过460帧!该应用程序可能会做它的主线程的工作太多了。
    10-30 15:07:35.280:D / AndroidRuntime(732):关闭虚拟机
    10-30 15:07:35.280:W / dalvikvm(732):主题ID = 1:螺纹退出与未捕获的异常(组= 0x40a13300)
    10-30 15:07:35.341:E / AndroidRuntime(732):致命异常:主要
    10-30 15:07:35.341:E / AndroidRuntime(732):java.lang.RuntimeException的:无法启动的活动ComponentInfo{com.erachnida.restaurant.versionoct/com.erachnida.restaurant.versionoct.CustomizedListView}: android.os.NetworkOnMainThreadException
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.app.ActivityThread.startActivityNow(ActivityThread.java:1900)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.widget.TabHost $ IntentContentStrategy.getContentView(TabHost.java:694)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.widget.TabHost.setCurrentTab(TabHost.java:358)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.widget.TabHost $ 2.onTabSelectionChanged(TabHost.java:150)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.widget.TabWidget $ TabClickListener.onClick(TabWidget.java:546)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.view.View.performClick(View.java:4084)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.view.View $ PerformClick.run(View.java:16966)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.os.Handler.handleCallback(Handler.java:615)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.os.Handler.dispatchMessage(Handler.java:92)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.os.Looper.loop(Looper.java:137)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.app.ActivityThread.main(ActivityThread.java:4745)
    10-30 15:07:35.341:E / AndroidRuntime(732):在java.lang.reflect.Method.invokeNative(本机方法)
    10-30 15:07:35.341:E / AndroidRuntime(732):在java.lang.reflect.Method.invoke(Method.java:511)
    10-30 15:07:35.341:E / AndroidRuntime(732):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)
    10-30 15:07:35.341:E / AndroidRuntime(732):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    10-30 15:07:35.341:E / AndroidRuntime(732):在dalvik.system.NativeStart.main(本机方法)
    10-30 15:07:35.341:E / AndroidRuntime(732):由:android.os.NetworkOnMainThreadException
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
    10-30 15:07:35.341:E / AndroidRuntime(732):在java.net.InetAddress.lookupHostByName(InetAddress.java:385)
    10-30 15:07:35.341:E / AndroidRuntime(732):在java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
    10-30 15:07:35.341:E / AndroidRuntime(732):在java.net.InetAddress.getAllByName(InetAddress.java:214)
    10-30 15:07:35.341:E / AndroidRuntime(732):在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
    10-30 15:07:35.341:E / AndroidRuntime(732):在org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    10-30 15:07:35.341:E / AndroidRuntime(732):在org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    10-30 15:07:35.341:E / AndroidRuntime(732):在org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    10-30 15:07:35.341:E / AndroidRuntime(732):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
    10-30 15:07:35.341:E / AndroidRuntime(732):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
    10-30 15:07:35.341:E / AndroidRuntime(732):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
    10-30 15:07:35.341:E / AndroidRuntime(732):在com.erachnida.restaurant.versionoct.XMLParser.getXmlFromUrl(XMLParser.java:45)
    10-30 15:07:35.341:E / AndroidRuntime(732):在com.erachnida.restaurant.versionoct.CustomizedListView.onCreate(CustomizedListView.java:42)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.app.Activity.performCreate(Activity.java:5008)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
    10-30 15:07:35.341:E / AndroidRuntime(732):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
    10-30 15:07:35.341:E / AndroidRuntime(732):18 ...更多
    10-30 15:07:42.250:I /处理(732):发送信号。 PID:732 SIG:9
 

解决方案

有这个问题的两个解决方案。

1)不要写在主UI线程网络呼叫,使用异步任务为。

2)写低于code到的setContentView(R.layout.activity_main后您MainActivity文件);

 如果(android.os.Build.VERSION.SDK_INT> 9){
    。StrictMode.ThreadPolicy政策=新StrictMode.ThreadPolicy.Builder()permitAll()建();
    StrictMode.setThreadPolicy(政策);
}
 

和下面的import语句到你的Java文件。

 进口android.os.StrictMode;
 

Hi all Viewers and readers, I am using link. Whenever I run this code in separate package it works fine, but whenever I am trying to embed this sample in my app, getting Unfortunately app has stopped, only when i click on tab that particular tab which calling it, and Logcat says:-

Caused by: android.os.NetworkOnMainThreadException
10-30 15:07:35.341: E/AndroidRuntime(732):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117),

please tell me what i need to do make it useful for me, except this particular tab whole app working fine.

  10-30 15:07:26.770: D/dalvikvm(732): GC_FOR_ALLOC freed 61K, 3% free 8035K/8259K, paused 39ms, total 46ms
    10-30 15:07:26.781: I/dalvikvm-heap(732): Grow heap (frag case) to 8.481MB for 614416-byte allocation
    10-30 15:07:26.850: D/dalvikvm(732): GC_CONCURRENT freed 1K, 4% free 8634K/8903K, paused 27ms+13ms, total 71ms
    10-30 15:07:26.881: D/dalvikvm(732): GC_FOR_ALLOC freed 0K, 4% free 8634K/8903K, paused 28ms, total 28ms
    10-30 15:07:26.900: I/dalvikvm-heap(732): Grow heap (frag case) to 9.798MB for 1382416-byte allocation
    10-30 15:07:26.970: D/dalvikvm(732): GC_CONCURRENT freed 0K, 4% free 9984K/10311K, paused 28ms+5ms, total 72ms
    10-30 15:07:27.110: D/gralloc_goldfish(732): Emulator without GPU emulation detected.
    10-30 15:07:30.591: D/dalvikvm(732): GC_FOR_ALLOC freed 675K, 8% free 9875K/10695K, paused 33ms, total 62ms
    10-30 15:07:30.671: D/dalvikvm(732): GC_FOR_ALLOC freed 519K, 9% free 9806K/10695K, paused 30ms, total 31ms
    10-30 15:07:30.740: D/dalvikvm(732): GC_FOR_ALLOC freed 310K, 10% free 9713K/10695K, paused 28ms, total 29ms
    10-30 15:07:30.751: I/dalvikvm-heap(732): Grow heap (frag case) to 10.488MB for 1000016-byte allocation
    10-30 15:07:30.820: D/dalvikvm(732): GC_CONCURRENT freed <1K, 9% free 10690K/11719K, paused 25ms+5ms, total 74ms
    10-30 15:07:30.911: D/dalvikvm(732): GC_FOR_ALLOC freed 0K, 9% free 10690K/11719K, paused 36ms, total 36ms
    10-30 15:07:30.931: I/dalvikvm-heap(732): Grow heap (frag case) to 12.633MB for 2250016-byte allocation
    10-30 15:07:31.030: D/dalvikvm(732): GC_CONCURRENT freed 0K, 8% free 12887K/13959K, paused 32ms+16ms, total 93ms
    10-30 15:07:31.211: D/dalvikvm(732): GC_FOR_ALLOC freed 3683K, 30% free 10314K/14599K, paused 35ms, total 38ms
    10-30 15:07:31.211: I/dalvikvm-heap(732): Grow heap (frag case) to 11.439MB for 1382416-byte allocation
    10-30 15:07:31.360: D/dalvikvm(732): GC_CONCURRENT freed <1K, 21% free 11663K/14599K, paused 81ms+5ms, total 144ms
    10-30 15:07:31.551: D/dalvikvm(732): GC_FOR_ALLOC freed 2555K, 32% free 9936K/14599K, paused 32ms, total 38ms
    10-30 15:07:31.561: I/dalvikvm-heap(732): Grow heap (frag case) to 10.706MB for 1000016-byte allocation
    10-30 15:07:31.701: D/dalvikvm(732): GC_CONCURRENT freed 1K, 26% free 10912K/14599K, paused 78ms+16ms, total 139ms
    10-30 15:07:31.770: D/dalvikvm(732): GC_FOR_ALLOC freed 0K, 26% free 10912K/14599K, paused 31ms, total 31ms
    10-30 15:07:31.770: I/dalvikvm-heap(732): Grow heap (frag case) to 12.850MB for 2250016-byte allocation
    10-30 15:07:31.871: D/dalvikvm(732): GC_CONCURRENT freed 0K, 11% free 13109K/14599K, paused 29ms+6ms, total 91ms
    10-30 15:07:32.060: D/dalvikvm(732): GC_FOR_ALLOC freed 1134K, 11% free 13102K/14599K, paused 35ms, total 39ms
    10-30 15:07:32.070: I/dalvikvm-heap(732): Grow heap (frag case) to 14.162MB for 1382416-byte allocation
    10-30 15:07:32.150: D/dalvikvm(732): GC_FOR_ALLOC freed <1K, 10% free 14451K/16007K, paused 36ms, total 36ms
    10-30 15:07:32.161: I/Choreographer(732): Skipped 460 frames!  The application may be doing too much work on its main thread.
    10-30 15:07:35.280: D/AndroidRuntime(732): Shutting down VM
    10-30 15:07:35.280: W/dalvikvm(732): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
    10-30 15:07:35.341: E/AndroidRuntime(732): FATAL EXCEPTION: main
    10-30 15:07:35.341: E/AndroidRuntime(732): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.erachnida.restaurant.versionoct/com.erachnida.restaurant.versionoct.CustomizedListView}: android.os.NetworkOnMainThreadException
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:1900)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:694)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.widget.TabHost.setCurrentTab(TabHost.java:358)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:546)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.view.View.performClick(View.java:4084)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.view.View$PerformClick.run(View.java:16966)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.os.Handler.handleCallback(Handler.java:615)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.os.Handler.dispatchMessage(Handler.java:92)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.os.Looper.loop(Looper.java:137)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.app.ActivityThread.main(ActivityThread.java:4745)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at java.lang.reflect.Method.invokeNative(Native Method)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at java.lang.reflect.Method.invoke(Method.java:511)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at dalvik.system.NativeStart.main(Native Method)
    10-30 15:07:35.341: E/AndroidRuntime(732): Caused by: android.os.NetworkOnMainThreadException
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at java.net.InetAddress.getAllByName(InetAddress.java:214)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at com.erachnida.restaurant.versionoct.XMLParser.getXmlFromUrl(XMLParser.java:45)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at com.erachnida.restaurant.versionoct.CustomizedListView.onCreate(CustomizedListView.java:42)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.app.Activity.performCreate(Activity.java:5008)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
    10-30 15:07:35.341: E/AndroidRuntime(732):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
    10-30 15:07:35.341: E/AndroidRuntime(732):  ... 18 more
    10-30 15:07:42.250: I/Process(732): Sending signal. PID: 732 SIG: 9

解决方案

There are two Solution of this Problem.

1) Don't write network call in Main UI Thread, Use Async Task for that.

2) Write below code into your MainActivity file after setContentView(R.layout.activity_main);

if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
}

And below import statement into your java file.

import android.os.StrictMode;

这篇关于android.os.NetworkOnMainThreadException:产生的原因的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆