【问题标题】:How to optimize android apps for multiple cores如何针对多核优化安卓应用
【发布时间】:2012-09-11 06:55:22
【问题描述】:

随着具有多核的安卓手机的出现,应用程序开发人员如何确保他们的应用程序利用这些核的额外处理能力。 据我了解,应用程序开发人员唯一能做的就是让他们的应用程序多线程,并让 android 内核负责将任务委托给不同的内核。

我想知道是否还有其他可以针对多核进行优化的方法。此外,android 中最好的多线程实践是什么。

【问题讨论】:

  • 我对多线程的最佳建议:不要 .. 除了并行化非常适合问题并且是一个可衡量的好处。很难做到正确,而且很多东西(例如 UI)本质上可以安全地线程化。 (对于需要后台处理的 UI 任务,通常使用“后台工作人员”(包括 AsyncTask)而不是直接使用线程更简单。)
  • 我非常不同意,考虑到 Android API 在帮助缓解Context 跟踪泄漏地狱方面已经走了很长一段路,synchronized 是我们的朋友,最后,范式是在这里停留。即使是简单的应用程序(通常)也会在显示信息之前将初始化/加载/......分开的东西,所以我们应该尽我们所能来结束这种“多核无用”(用户)或“多核很难”(开发人员)。它还具有改变大多数开发人员关心 UI 线程隔离的心态(导致应用程序缓慢的第一大原因)的好处。重点是有很多好处。

标签: android multithreading optimization


【解决方案1】:

与其尝试自己执行线程化,不如使用内置的范例,例如 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() {

                      }});

通常网络调用和数据解析应该在单独的线程上完成

【讨论】:

    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2020-08-10
    • 1970-01-01
    相关资源
    最近更新 更多