如何为多核处理器优化安卓应用程序

5

随着多核Android手机的普及,应用程序开发人员如何确保其应用程序利用这些核心的额外处理能力呢?据我所知,应用程序开发人员唯一能做的就是将其应用程序变成多线程并让Android内核负责将任务分配到不同的核心上。

我想知道是否还有其他优化多核心的方法。另外,在Android中,最佳的多线程实践是什么。


2
我的最佳多线程建议是:除非并行化很适合问题,并且有明显的好处,否则不要使用它。这很难正确实现,许多事情(如UI)本质上不能安全地进行线程处理。(对于需要后台处理的UI任务,通常更简单的方法是直接使用“后台工作者”,包括AsyncTask,而不是直接使用线程。) - user166390
1
我非常尊重地不同意,考虑到Android API已经有了长足的进步,以帮助缓解Context追踪泄漏的困境,synchronized是我们的朋友,并且这种编程范式已经深入人心。即使是简单的应用程序通常也有需要初始化/加载/...才能显示信息,因此我们应该尽力结束“多核无用”(用户)或“多核难”(开发人员)的说法。它还有一个好处,就是改变了大多数开发人员对UI线程隔离(导致应用程序变慢的主要原因)的看法。总之,这种编程范式有很多好处。 - davidcesarino
1个回答

2

与其自己尝试执行线程,最好使用内置的范例,如AsyncTask。

如果您想要

//Sets up a thread pool where NUM_THREADS is the amount that can run at the same time
ExecutorService threadPool = null;
threadPool = Executors.newFixedThreadPool(NUM_THREADS);

//Will execute something on one of the threads queuing if necessary
threadPool.execute(new Runnable() {
    @Override
    public void run() {

                      }});

通常,Web调用和数据解析应在单独的线程上进行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接