1

現在、このコードは機能していません

public class MainActivity extends Activity {


String X = "Music"; 
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);


 new AsyncTask<Void, Void, Void>() {
        @Override
        protected Void doInBackground(Void... voids) {
            Socket socket = null;
             DataOutputStream dataOutputStream = null;
             DataInputStream dataInputStream = null;

             try {
              socket = new Socket("172.16.82.131", 8888);
              dataOutputStream = new DataOutputStream(socket.getOutputStream());
              dataInputStream = new DataInputStream(socket.getInputStream());
              dataOutputStream.writeUTF(X);
              //textIn.setText(dataInputStream.readUTF());
             } catch (UnknownHostException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             }
             finally{
              if (socket != null){
               try {
                socket.close();
               } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
               }
              }

              if (dataOutputStream != null){
               try {
                dataOutputStream.close();
               } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
               }
              }

              if (dataInputStream != null){
               try {
                dataInputStream.close();
               } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
               }
              }
             }


            return null;
        }
    }.execute();




   }


    }

以前の投稿で、ボタンのクリックで機能が実行されているコードを投稿しましたが、コードをこのコードに変更しました。アプリケーションの起動時にバックグラウンドでコードを実行するためにこの方法を試しましたが、何も起こりません。私はどこが間違っているのかを見つけることができません..助けてください:(

4

6 に答える 6

1

AsyncTask を使用してDataOutputStream と Socketを操作する

以下のコード例を参照してください

onCreate() メソッドから以下の行を呼び出します

 new SignInService().execute();

そして、以下のようなクラスを作成し、onPostExecute メソッドでこの行を書き込みます textIn.setText(dataInputStream.readUTF());

private class SignInService extends AsyncTask<Void, Void, Void> {
      Socket socket = null;
      DataOutputStream dataOutputStream = null;
      DataInputStream dataInputStream = null;

     @Override
    protected void onPreExecute() {
        super.onPreExecute();
        try {
            progressDilaog = ProgressDialog.show(MainActivity.this, "",
                    "Loading", true, false);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected Void doInBackground(Void... params) {

     try {
        socket = new Socket("112.13.835.187", 8183);
        dataOutputStream = new DataOutputStream(socket.getOutputStream());
          dataInputStream = new DataInputStream(socket.getInputStream());
          dataOutputStream.writeUTF(x);

      } catch (UnknownHostException e) {

        e.printStackTrace();
      } catch (IOException e) {
           // TODO Auto-generated catch block
         e.printStackTrace();
      }
      finally{
         if (socket != null){
         try {
            socket.close();
          } catch (IOException e) {
            // TODO Auto-generated catch block
             e.printStackTrace();
           }
          }

        if (dataOutputStream != null){
          try {
            dataOutputStream.close();
          } catch (IOException e) {
           // TODO Auto-generated catch block
                 e.printStackTrace();
          }
        }

        if (dataInputStream != null){
           try {
               dataInputStream.close();
            } catch (IOException e) {
              e.printStackTrace();
             }
        }
      }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        progressDilaog.dismiss();

        textIn.setText(dataInputStream.readUTF());
    }
}
于 2013-04-03T12:04:16.087 に答える