0

次の問題が発生しました。私のアプリには 5 つのアクティビティがあり、TCP クライアントとして機能します。アプリを起動すると、アクティビティ 1 が開始され、サーバーとの接続が確立されます。

このアクティビティは、受信データを取得するためのリスナーを所有しています。

public void messageReceived(final String message) {
        RemoteActivity.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
              RemoteActivity.this.GetMessage(message);                              
        }
        });
}   

ここで私の質問: このスレッドを他のアクティビティで使用する可能性はありますか? 他のアクティビティからこのスレッドにリスナーを追加するにはどうすればよいですか?

みんなのヒントをありがとう:)

4

1 に答える 1

1

TCPWorker をシングルトンにするだけで、さまざまなアクティビティからアクセスできるようになります。完了したらスレッドをシャットダウンする必要があることに注意してください。そうしないと、Android がアプリを強制終了するまでスレッドが実行されます。

例:

public class TCPWorker {

    //Your static worker object
    private static TCPWorker worker;
    private TCPListener listener;

    //The method that activities use to access your TCPWorker object
    public static TCPWorker worker() {
        if (worker == null) {
            worker = new TCPWorker();
        }
        return worker;
    }

    //Make your constructor private, activities should only access your worker from the singleton method.
    private TCPWorker() {
        //Initialize the worker
    }

    public void setTCPListener(TCPListener listener) {
        this.listener = listener;
    }

    public void getTCPListener() {
        return this.listener;
    }

}

乾杯

于 2013-05-22T16:42:32.067 に答える