2012-01-24 10 views
0

デバイスの緯度と経度を取得しています。これを実行しているサーバーに送信すると、データベースの値が更新されます。 Theresの問題はポジションを獲得していないと、サーバは、まだ私は、エラーメッセージを取得しています正常に動作している:NetworkOnMainThreadExceptionを与えるサーバーのためのシンプルなAndroidクライアント

android.os.NetworkOnMainThreadException 

コード:

sendGPS.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      ObjectOutputStream oos = null; 

      String Header = "GPSUpdate"; 
      String Userid = "07000000001"; 
      String Latitude = latitudeBox.getText().toString(); 
      String Longitude = longitudeBox.getText().toString(); 

      try{ 
       Socket socket = new Socket("igor.gold.ac.uk", 3000); 
       oos = new ObjectOutputStream(socket.getOutputStream()); 

       UserObject userObject = new UserObject(); 
       userObject.setHeader(Header); 
       userObject.setUserid(Userid); 
       userObject.setLatitude(Latitude); 
       userObject.setLongitude(Longitude); 

       oos.writeObject(userObject); 
       oos.flush(); 
       oos.close(); 
      } 
      catch(Exception e){ 
       latitudeBox.setText("Error: " + e); 
      } 
     } 
    }); 
} 

}

は私がAsynctaskの聞いたことがあるが、私はよ少しそれが何であるかがわからないと、まだその上に読んでいます。与えられた任意の助け

感謝。

答えて

1

NetworkOnMainThreadException

アプリケーションがメインスレッド上のネットワーク操作を実行しようとしたときにスローされる例外。

これが唯一のハニカムSDK以上をターゲットとするアプリケーションのためにスローされます。以前のSDKのバージョンをターゲットとするアプリケーションは、そのメインイベントループスレッドでのネットワーキングを行うに許可されているが、それはひどく落胆しています。文書Designing for Responsivenessを参照してください。代わりに活動のメインスレッド使用AsyncTaskThreadまたはそれのためのServiceを使用しての

最良のオプションは、AsyncTask's doINBackGround()方法でネットワーク操作を入れています。

関連する問題