0

まず第一に、私は Android プログラミングの経験が豊富です

Service を使用して単純な TCP Socket を作成しました。

MainActivityボタンがトリガーされると、クライアントはサーバーに接続します。

今、サービスのPrintWriterオブジェクトをMainActivity使用してオブジェクトを作成したいと思いSocketます。

JSONServiceを使用してから にオブジェクトを渡すことができることを知りました。Activity

インターネットで検索しましたが、どうすれば合格できるのかわかりませんでした。

オブジェクトを渡す簡単なコード例を教えてください。

MyService.java

public class MyService extends Service{
public static Socket clientsocket;
public static PrintWriter printer;
SendMessage sender;

@Override
public void onCreate() {
Toast.makeText(this, "Created", Toast.LENGTH_LONG).show();
super.onCreate();
}

@Override
public void onDestroy() {
Toast.makeText(this, "Stoped", Toast.LENGTH_LONG).show();
if(clientsocket!=null){
        try{
        clientsocket.close(); 
        Toast.makeText(this, "Socket Closed", Toast.LENGTH_LONG).show();
        }catch(IOException e){
            e.printStackTrace();
        }
    }
  }

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Toast.makeText(this, "Running", Toast.LENGTH_LONG).show();
    SendMessage sender=new SendMessage();
    sender.execute();
    return super.onStartCommand(intent, flags, startId);
}

@Override
public IBinder onBind(Intent arg0) {
    return null;
}

class SendMessage extends AsyncTask<Void, Void, Void>{

    @Override
    protected Void doInBackground(Void... params) {
        try {
            clientsocket = new Socket("192.168.237.1", 6666);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        if(clientsocket!=null){
            Toast.makeText(MyService.this, "Connected", Toast.LENGTH_LONG).show();
        }else{
            Toast.makeText(MyService.this, "Lost Connection", Toast.LENGTH_LONG).show();
        }
        super.onPostExecute(result);
    }

   }}

MainActivity.java

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}

public void start(View v){
    startService(new Intent(this,MyService.class));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
     getMenuInflater().inflate(R.menu.main, menu);
     return true;
}

class PrintMessage extends AsyncTask<Void, Void, Void>{

    @Override
    protected Void doInBackground(Void... arg0) {
        return null;
    }
}

@Override
protected void onDestroy() {
    stopService(new Intent(this,MyService.class));
    super.onDestroy();
}}

Socketここで、MyService.java (この場合はオブジェクトIe を渡す方法clientsocket) と MainActivity.java (渡されたオブジェクト Ie を取得し、それを使用してオブジェクト clientsocketを作成する方法)の両方の明確で完全なコードが必要です。 PrintWriter

4

2 に答える 2

0

greenrobot EventBus のようなイベント バス ライブラリの使用を検討してください :-) アプリの要素間でデータを渡す場合、これらの機能は驚異的であり、非常に安全に使用できます。

于 2014-12-15T09:02:23.767 に答える