Android我可以使用多少线程?

时间:2011-09-28 18:31:53

标签: android multithreading timer listener android-asynctask

我有一个Android应用程序,它有不同的东西,但基本上都是线程(绝对是Android调试器的线程)

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

倒数计时器在启动后始终倒计时为零

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

洞察力赞赏

3 个答案:

答案 0 :(得分:8)

我会非常惊讶地发现你已经耗尽了你可以在Android应用程序中安全使用的线程数,只要你正确管理它们的生命周期并防止“忙碌循环”等发生。

我确实学到了一件事,我很确定你在任何时候都只能有5个asynctasks可操作,并且如果你开始新的,他们将任意继续存在并被自己杀死或重生......即如果我转了一个asynctask然后关闭五次,调试器会说5个异步线程可以运行,但是我可以不断地打开和关闭,因为资源池将杀死最老的死asynctask。

答案 1 :(得分:0)

我知道没有最大值。但是,我可以告诉你,你很可能不需要这么多线程。

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

答案 2 :(得分:0)

我不相信倒计时器会创建线程 - 它应该简单地将你的任务从它的外观添加到主线程的队列中。

所有的侦听器也应该在同一个线程上进行(有一个线程可以管理所有侦听器(无论如何都是可见对象)。

所以你可能没有像你想象的那样使用任何数量的线程。如果你创建了许多线程我会担心 - 它们很难保持同步并且可能比你获得的成本高得多,但是如果列出的结构我会继续分配尽可能多的线程。你觉得合适(但当然要在便宜的设备上测试性能)