2012-09-18 49 views
5

随着具有多核心的android手机的可用性,应用程序开发人员如何确保他们的应用程序利用这些核心的额外处理能力。 根据我的理解,应用程序开发人员可以做的唯一事情就是让他们的应用程序成为多线程,并让android内核负责在不同内核上委派任务。如何针对多个核心优化android应用程序

我想知道是否还有其他方法可以优化多个内核。另外,什么是Android中最好的多线程实践。

+2

我最好的建议是:*不*。* *除外其中并行拟合问题很好*和*有一个可衡量的好处。很难得到正确的结果,许多事情(比如UI)本质上不能安全地进行线程化。 (对于需要后台处理的UI任务,使用“后台工作人员”通常更简单,包括[AsyncTask](http://developer.android.com/reference/android/os/AsyncTask.html),而不是直接使用线程。) – 2012-09-19 00:09:02

+1

我非常不同意,考虑到Android API已经有很长的一段路要帮助缓解'Context'跟踪漏洞,'synchronized'是我们的朋友,并且最后,这个范例在这里停留。即使是简单的应用程序(通常)在显示信息之前(通常)也会分开来初始化/加载/ ...,所以我们应该尽我们所能来结束这个“多核无用”(用户)或“多核很难”(开发人员)。它还具有改变大多数开发人员关于UI线程隔离的心态(缓慢应用程序的第一个原因)的好处。要点是有很多好处。 – davidcesarino

回答

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() { 

         }}); 

典型的网络电话和数据分析应该在一个单独的线程来完成多线程

相关问题