2013-06-25 60 views
-6

我正在致力於獲取實時貨幣匯率的android應用程序。但不幸的是,它已停止工作。不幸的是,[應用程序名稱]已停止

這裏是日誌:當你試圖在主UI線程執行網絡操作出現

06-25 09:57:15.881: D/dalvikvm(788): GC_CONCURRENT freed 77K, 7% free 2737K/2932K, paused 17ms+34ms, total 107ms 
06-25 09:57:16.071: D/gralloc_goldfish(788): Emulator without GPU emulation detected. 
06-25 09:57:28.326: D/dalvikvm(788): GC_FOR_ALLOC freed 13K, 5% free 3042K/3192K, paused 25ms, total 28ms 
06-25 09:57:28.336: I/dalvikvm-heap(788): Grow heap (frag case) to 4.159MB for 1127536-byte allocation 
06-25 09:57:28.456: D/dalvikvm(788): GC_FOR_ALLOC freed 4K, 4% free 4139K/4296K, paused 118ms, total 118ms 
06-25 09:57:28.518: D/dalvikvm(788): GC_CONCURRENT freed 1K, 4% free 4157K/4296K, paused 4ms+3ms, total 62ms 
06-25 09:57:32.847: D/AndroidRuntime(788): Shutting down VM 
06-25 09:57:32.847: W/dalvikvm(788): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
06-25 09:57:32.856: E/AndroidRuntime(788): FATAL EXCEPTION: main 
06-25 09:57:32.856: E/AndroidRuntime(788): android.os.NetworkOnMainThreadException 
06-25 09:57:32.856: E/AndroidRuntime(788): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 
06-25 09:57:32.856: E/AndroidRuntime(788): at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
06-25 09:57:32.856: E/AndroidRuntime(788): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
06-25 09:57:32.856: E/AndroidRuntime(788): at java.net.InetAddress.getAllByName(InetAddress.java:214) 
06-25 09:57:32.856: E/AndroidRuntime(788): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 
06-25 09:57:32.856: E/AndroidRuntime(788): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
06-25 09:57:32.856: E/AndroidRuntime(788): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
06-25 09:57:32.856: E/AndroidRuntime(788): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
06-25 09:57:32.856: E/AndroidRuntime(788): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
06-25 09:57:32.856: E/AndroidRuntime(788): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
06-25 09:57:32.856: E/AndroidRuntime(788): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
06-25 09:57:32.856: E/AndroidRuntime(788): at com.example.allcurrency.MainActivity.getJson(MainActivity.java:91) 
06-25 09:57:32.856: E/AndroidRuntime(788): at com.example.allcurrency.MainActivity$1.onClick(MainActivity.java:66) 
06-25 09:57:32.856: E/AndroidRuntime(788): at android.view.View.performClick(View.java:4204) 
06-25 09:57:32.856: E/AndroidRuntime(788): at android.view.View$PerformClick.run(View.java:17355) 
06-25 09:57:32.856: E/AndroidRuntime(788): at android.os.Handler.handleCallback(Handler.java:725) 
06-25 09:57:32.856: E/AndroidRuntime(788): at android.os.Handler.dispatchMessage(Handler.java:92) 
06-25 09:57:32.856: E/AndroidRuntime(788): at android.os.Looper.loop(Looper.java:137) 
06-25 09:57:32.856: E/AndroidRuntime(788): at android.app.ActivityThread.main(ActivityThread.java:5041) 
06-25 09:57:32.856: E/AndroidRuntime(788): at java.lang.reflect.Method.invokeNative(Native Method) 
06-25 09:57:32.856: E/AndroidRuntime(788): at java.lang.reflect.Method.invoke(Method.java:511) 
06-25 09:57:32.856: E/AndroidRuntime(788): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
06-25 09:57:32.856: E/AndroidRuntime(788): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
06-25 09:57:32.856: E/AndroidRuntime(788): at dalvik.system.NativeStart.main(Native Method) 
06-25 09:58:27.896: I/Process(788): Sending signal. PID: 788 SIG: 9 
+4

你是在UI線程上運行的網絡相關操作。使用asynctask。 http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html。 http://developer.android.com/reference/android/os/AsyncTask.html – Raghunandan

+0

這將是有益的,如果你張貼一些代碼 – Jaguar

回答

1

使用Asynctask做網絡計算或任何耗時的工作時間。

您不得使用UI線程任何繁重的計算,因爲它使您的用戶界面反應遲鈍,你正在做UI Thraed一些任務,這就是爲什麼你得到這個異常

+0

那麼我如何使用Asyntask?我很新的機器人,所以請幫助 – Wanderer

+0

粘貼你的代碼,所以我們可以幫助出 – Nargis

+0

這裏它的顯示代碼太長 – Wanderer

1

當應用程序嘗試在其主線程上執行聯網操作時,會引發此異常。在AsyncTask運行您的代碼。

不要忘了將它添加到AndroidManifest.xml文件:

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

看一看文章Painless Threading

+0

我已經添加 Wanderer

2

應用崩潰由於嚴格的模式策略,插入如下行發送到服務請求或連接到網絡之前:

 ThreadPolicy tp = ThreadPolicy.LAX; 
     StrictMode.setThreadPolicy(tp); 

希望它可以幫助你:)

+0

在哪裏添加? – Wanderer

+0

之前調用一個web服務或做網絡相關信息 –

+0

我加了這個代碼,但它顯示如下錯誤。對於LAX Field需要API等級9(當前最小爲8):android.os.StrictMode.ThreadPolicy#LAX ...........並且對於setThreadPolicy Call要求API等級9(當前最小爲8):android .os.StrictMode#setThreadPolicy – Wanderer

相關問題