如何在我的Android客户端中设计tcp消息监听器?

时间:2012-03-16 23:27:30

标签: android multithreading tcp

我是Android的新手。 我正在为我的项目开发一个客户端(android)-server(java)arcitecture应用程序。我有疑问.. 我的4-5活动会将tcp消息发送到服务器并获得响应以自行执行某些操作。所以我需要这些消息的后台监听器,然后在这些4-5活动中做一些事情。我在哪里可以实现这个监听器线程来响应我的不同行为。将这些Activites的子类中的5个AsyncTask写入消息传递服务器是一种好方法吗? 我认为1个线程可以完成工作;但我怎么能绑定活动.. 这是我正在谈论的服务吗?但是,当我的应用程序销毁时,我不想做某事。

1 个答案:

答案 0 :(得分:0)

我编写了一个非常相似的应用程序并使用单例来完成工作。创建活动后,调用Listener.getInstance()以获取监听器的实例。如果尚未创建,请创建它。

在Listener对象中,创建一个线程来执行所有套接字通信。当消息可用时,使用处理程序(或其他一些同步机制)将其发回主GUI线程。

public class Listener implements Runnable, Callback
{
    String ipAddress;
    int ipPort;
    private listener = null;
    Handler handler;

    public Listener
    {
        handler = new Handler(this);
    }

    public Listener getInstance()
    {
        if (listener == null)
            listener = new Listener()
        return listener;
    }

    public void connect()
    {
        thread = new thread();
        thread.run(this);
    }

    public void run()
    {
        socket = new Socket();
        socket.connect(new InetSocketAddress(ipAddress, ipPort));

        //do your thread/socket work...

        //when a message is available via the socket, post the message back to the main GUI thread using a handler.
        Message msg = new Message();
        //fill the msg with data
        handler.sendMessage(msg);
    }

    @Override public boolean handleMessage(Message msg)
    {
        //hand message to current activity
    }
}

可在此处找到一个很棒的套接字示例:http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

作为替代方案,您可以在服务中完成所有这些工作。我刚开始时就选择了这条路。它对我有用。