2012-12-28 24 views
-1

可能重複:
android.os.NetworkOnMainThreadException
Android Socket Client didn’t send and closes itself的Android客戶端的Socket關閉本身

我是新來的Java和Android編程,我試圖將程序的Android客戶端和服務器我的電腦(Windows 7)。有了這個連接,我想發送一個字符串從PC到Android應用程序,也從應用程序到PC。我檢查了我的服務器,它是否編程正確,是否正確。所以我必須在我的客戶中出現錯誤。當我啓動應用程序。該應用程序啓動,但是當我想從我的應用程序發送一個字符串到PC應用程序只是關閉自己。現在我確實需要你的幫助。我一直在應用程序上編程超過2天。

這是我的LogCat,我真的希望你能告訴我在哪裏可以找到我的錯誤。

12-28 21:10:29.348: I/dalvikvm(565): threadid=3: reacting to signal 3 

12-28 21:10:29.428: I/dalvikvm(565): Wrote stack traces to '/data/anr/traces.txt' 

12-28 21:10:29.818: I/dalvikvm(565): threadid=3: reacting to signal 3 

12-28 21:10:29.888: I/dalvikvm(565): Wrote stack traces to '/data/anr/traces.txt' 

12-28 21:10:30.258: D/gralloc_goldfish(565): Emulator without GPU emulation detected. 

12-28 21:10:30.319: I/dalvikvm(565): threadid=3: reacting to signal 3 

12-28 21:10:30.348: I/dalvikvm(565): Wrote stack traces to '/data/anr/traces.txt' 

12-28 21:11:12.498: D/AndroidRuntime(565): Shutting down VM 

12-28 21:11:12.508: W/dalvikvm(565): threadid=1: thread exiting with uncaught exception 
(group=0x409c01f8) 

12-28 21:11:12.540: E/AndroidRuntime(565): FATAL EXCEPTION: main 

12-28 21:11:12.540: E/AndroidRuntime(565): android.os.NetworkOnMainThreadException 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
libcore.io.IoBridge.connectErrno(IoBridge.java:127) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
libcore.io.IoBridge.connect(IoBridge.java:112) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
java.net.Socket.startupSocket(Socket.java:566) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
java.net.Socket.tryAllAddresses(Socket.java:127) 

12-28 21:11:12.540: E/AndroidRuntime(565): at java.net.Socket.<init>(Socket.java:177) 

12-28 21:11:12.540: E/AndroidRuntime(565): at java.net.Socket.<init>(Socket.java:149) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
net.ibasic.AndroidClient$1.onClick(AndroidClient.java:50) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
android.view.View.performClick(View.java:3511) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
android.view.View$PerformClick.run(View.java:14105) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
android.os.Handler.handleCallback(Handler.java:605) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
android.os.Handler.dispatchMessage(Handler.java:92) 

12-28 21:11:12.540: E/AndroidRuntime(565): at android.os.Looper.loop(Looper.java:137) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
android.app.ActivityThread.main(ActivityThread.java:4424) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
java.lang.reflect.Method.invokeNative(Native Method) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
java.lang.reflect.Method.invoke(Method.java:511) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 

12-28 21:11:12.540: E/AndroidRuntime(565): at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 

12-28 21:11:12.540: E/AndroidRuntime(565): at dalvik.system.NativeStart.main(Native 
Method) 

12-28 21:11:13.178: I/dalvikvm(565): threadid=3: reacting to signal 3 

12-28 21:11:13.218: I/dalvikvm(565): Wrote stack traces to '/data/anr/traces.txt' 

12-28 21:11:15.288: I/Process(565): Sending signal. PID: 565 SIG: 9 
+0

鑑於堆棧跟蹤這個異常'android.os.NetworkOnMainThreadExcept離子'我期待着你在主線程中進行網絡活動,而Android似乎並不喜歡這種活動。做一個例外搜索,你一定會發現大批犯了同樣錯誤的人,以及他們如何修復它。 –

+0

好的。謝謝。我會尋找這個。 – Lukas5060

回答

1

這聽起來像你可能正在做的主界面,而不是像的AsyncTask 後臺網絡的東西這裏是它是如何設置的

public class MyNetworkTask extends AsyncTask<String, String, String> { 
@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
} 

@Override 
protected void onProgressUpdate(String... values) { 
    super.onProgressUpdate(values); 

} 

@Override 
protected String doInBackground(String... params) { 
//do your work here 
    return something; 
} 

@Override 
protected void onPostExecute(String result) { 
    super.onPostExecute(result); 
     // do something with data here-display it or send to mainactivity 

}

這裏一個基本的例子是一個鏈接到它的文檔: http://developer.android.com/reference/android/os/AsyncTask.html