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 回答