首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Android客户端设计tcp消息监听器?

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

Stack Overflow用户
提问于 2012-03-17 07:27:30
回答 1查看 2.4K关注 0票数 0

我是Android的新手。我正在为我的项目开发一个客户端(Android)-server(Java)架构应用程序。我有一些问题..。我的4-5活动将发送tcp消息到服务器,并获得响应以对自己做一些事情。所以我需要一个后台监听器来监听这些消息,然后在这4-5个活动中做一些事情。我可以在哪里实现这个侦听器线程来响应我的不同操作。将这些活动的子类中的5个AsyncTask写到消息服务器中是一种好方法吗?我认为1个线程就可以完成这项工作;但是我如何绑定activites..我说的是服务吗?但是当我的应用崩溃的时候,我不想做一些事情。

EN

回答 1

Stack Overflow用户

发布于 2012-03-19 23:07:39

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

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

代码语言:javascript
复制
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/

作为替代方案,您可以在一个服务中完成所有这些工作。我刚开始的时候就选择了这条路。它对我来说效果很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9745765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档