【问题标题】:Android how many threads can I have going?Android 我可以有多少线程?
【发布时间】:2011-11-27 02:50:29
【问题描述】:

我有一个 Android 应用程序,它有单独的事情,但基本上都是线程(并且绝对是 Android 调试器的线程)

有多个动画监听器循环并相互调用

有一个倒数计时器,启动后总是倒数到零

现在我需要考虑添加更多倒数计时器。我可以进行多少这样的循环过程?在这个特定的实现中,我不关心性能、效率等,直到它变得明显。

洞察力赞赏

【问题讨论】:

    标签: android multithreading timer listener android-asynctask


    【解决方案1】:

    我不相信倒数计时器会创建线程——从外观上看,它应该只是将您的任务添加到主线程上的队列中。

    您的所有侦听器也应该发生在同一个线程上(有一个线程管理所有侦听器(对于可见对象)。

    因此,您使用的线程数可能没有您认为的那么多。如果你创建了很多线程,我会担心——它们真的很难保持同步,并且可能花费你比你得到的更多,但是列出的结构我会继续分配尽可能多的你觉得合适(当然要在便宜的设备上测试性能)

    【讨论】:

      【解决方案2】:

      据我所知,没有最大值。不过,我可以告诉你,你很可能不需要那么多线程。

      您可以使用 Android 的 Handler,特别是 postDelayed() 方法将倒计时监听器保留在单个线程中。在单独的线程中启动Looper,并使用Handler 来管理超时——不要忙于等待或睡眠循环。

      【讨论】:

      • 你是怎么把用户名倒过来的??
      【解决方案3】:

      得知您用尽了可以在 android 应用程序中安全使用的线程数,我会感到非常惊讶,只要您正确管理它们的生命周期并防止“忙循环”等发生。

      我确实学到了一件事,我很确定你在任何时候都只能有 5 个异步任务运行,如果你启动新任务,它们将任意继续存在并被自己杀死或重生......即,如果我打开一个异步任务然后关闭五次,调试器会说 5 个异步线程正在运行,但我可以根据需要不断地打开和关闭,因为资源池会杀死最旧的死异步任务。

      【讨论】:

      • 很好,很高兴知道。我正在开发一个使用许多异步任务的不同应用程序
      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2021-09-12
      • 2015-05-22
      相关资源
      最近更新 更多