2

我正在开发一个 android 应用程序,它需要打开多达 20 个套接字(并行),并每 4 秒从每个套接字获取更新(并分别更新 UI)。

这是我到目前为止所尝试的:

  1. 为每个套接字连接创建一个 TimerTask 并使用处理程序和消息将更新发布到 UI 线程。 这个解决方案的问题:在创建了大约 15 个 TimerTask(每个都在不同的线程上)之后,我的应用程序的 UI(非常简单)开始运行。第二个问题是来自每个套接字的更新甚至没有远程同步(例如,一个每 4 秒更新一次,另一个每 20 秒更新一次)。
  2. 创建一个使用异步套接字通道和选择器处理所有通信的线程。这个解决方案的问题: Java 没有内置对 SSL 的支持(而是他们只是提供了一个 SSL 引擎,而不是一个 SSLChannelSocket),我需要 SSL 套接字。

任何建议/其他解决方案?

4

1 回答 1

0

我相信您可能对您的应用程序中的 NIO(又名非阻塞 I/O)感兴趣。它应该使您能够以更有效的方式处理多个客户端-请参阅这篇文章-它将为您提供一些有关如何有效和正确地执行此操作的信息。

您可以在Google 的 Anymote 库中找到如何处理此问题的示例。他们特别做我在评论中提到的 - 阅读专用线程:

  mReceiverThread = new Thread(new Runnable() {
  public void run() {
    boolean available = true;
    while (available) {
      available = getNextRemoteMessage();
    }
    stop();
  }});

尽管它使用直接回调(因此接口方法是从读取线程调用的,而不是通过 Handler.

祝你好运!

于 2012-11-05T12:00:52.373 回答