2012-02-29 12 views
0

私はサーバーに接続することを含むアンドロイドアプリに取り組んでいます。私は新しいスレッドでソケットを作成して(そして非同期タスクを使用して)、ネットワークのメインスレッドの例外を取得しています。 ソケットは正常なJavaプログラムから正常に動作し、IPはローカルネットワーク上にあり、pingは正常に動作します。 電話がネクサス銀河で、Androidのバージョン4.0.2Androidネットワークnonmainメインスレッド以外からの例外の読み取り

package uk.ac.cam.echo.app; 

import java.io.IOException; 
import java.net.Socket; 
import java.net.UnknownHostException; 

import android.os.AsyncTask; 


public class DBTask extends AsyncTask<Void,Void,Void>{ 

    protected Void doInBackground(Void... params) { 
     try { 
      Socket s = new Socket("192.168.15.98",44444); 
     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 
+1

共有非同期タスクコード – Blackbelt

+0

どのように 'doInBackground'を呼びますか?あなたはまだメインのアプリケーションスレッドから呼び出すように聞こえます。例えば'task =新しいDBTask(); task.doInBackground(); '。 –

答えて

0

はあなたのAsyncTaskが呼び出された場所からとdoInBackground内部からandroid.os.Process.myTid()をログアウトしてください。それらが同じ場合、AsyncTaskは実際にスレッドプールに移動していません。

AsyncTaskをアクティブにするコードも指定できますか?

+0

固定。 Wi-Fiが完全に構成されていないことがわかります。しかし、なぜそれがnetworkonmainthreadexceptionを投げていたのかわからない... – user1178604

関連する問題