如何在android中执行多个重复的任务

时间:2012-11-05 11:03:17

标签: android sockets timertask

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

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

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

1 个答案:

答案 0 :(得分:0)

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

您可以在Google's Anymote library中找到如何处理此问题的示例。他们特别注意我在评论中提到的 - 专门阅读的主题:

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

虽然它使用直接回调(因此接口方法是从读取线程调用的,而不是通过Handler发布的。

祝你好运!