我遇到以下问题。我的应用程序有5个活动,并作为TCP客户端工作。如果我启动该应用程序,活动1将开始并与服务器建立连接。

此活动拥有用于获取传入数据的侦听器。

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


现在我的问题是:是否有可能在其他活动中使用此线程?如何将其他活动中的更多侦听器添加到此线程?

谢谢你的提示伙计们:)

最佳答案

您只需将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;
    }

}


干杯

09-08 12:07