我必须实现让我在后台同时运行许多进程的东西。问题是我不知道从一开始有多少人和所有人必须以相同的方式处理,但具有不同的参数。我想知道在效率和电池成本方面实施它的最佳方法是什么。任何帮助都会非常感激。
答案 0 :(得分:0)
要添加建议{{1}}的答案 - 根据您的要求,您需要考虑Service
代码将在主应用程序线程上运行,就像{Service
内部的代码一样1}}。
Excerpt from the Service page in the Developer Guide:
警告:服务在其托管进程的主线程中运行 - service不会创建自己的线程,也不会单独运行 过程(除非您另行指定)。这意味着,如果你的 服务将进行任何CPU密集型工作或阻塞操作 (如MP3播放或网络),你应该创建一个新的线程 在服务范围内做这项工作。通过使用单独的线程,你 将降低应用程序无响应(ANR)错误的风险 应用程序的主线程可以保持专用于用户交互 与您的活动。
这意味着它与运行后台线程不同。
如果您需要真正的后台处理,则应考虑在Activity
启动的后台线程中运行每个进程。
Service
允许您在应用不在前台时运行。多个线程允许它运行主UI线程。
在管理这些多线程方面,请考虑使用类似ThreadPoolExecutor的内容。对此问题的每个方面的完整描述超出了这个问题的范围,但我相信通过阅读开发者指南链接,您将学到很多东西。它们提供了许多细节以及一些演示代码。