2011-10-03 50 views
2

想知道使用一个处理器进行线程处理是否可以为我提供帮助。 我正在构建一个应用程序,该应用程序在用户界面运行时需要平稳运行时执行数据密集型计算(对pcm数据为fft)。使用单核的Android线程处理

我一直在寻找的AsyncTask,但在想:

如果我有一个单核处理器(600 MHz的ARM处理器,11)在我的Optimus One运行,将穿线有所作为?我认为线程独立运行需要多个处理器?或者我在某个地方出了问题?

回答

6

为了保证响应速度,必须让主线程或UI线程执行UI事务。这不包括游戏中的强化绘图或3d渲染。当你开始在你的主线程中做计算密集型的事情时,用户会看到滞后。一个经典的例子:

在一个按钮上单击,睡眠(1000)。比较一下,点击按钮后,启动睡眠的AsyncTask(1000)。

一个asynctask(和其他线程)允许应用程序“simulataneously”处理计算和UI交互。就并发性而言,上下文切换是游戏的名称(如Dan的帖子)。

单核CPU上的多线程不会提高性能。实际上,与上下文切换相关的开销实际上会降低您的性能。但是,谁关心你的应用程序工作的速度有多快,当用户对用户界面感到沮丧并关闭应用程序?

Asynctask肯定是要走的路。

+0

谢谢你的帮助伊恩。我相信那是我要做的 –

+0

这是一个很好的解释! –

2

查看开发指南文章Designing for Responsiveness

Android使用Linux内核和其他专业软件来创建Android操作系统。它使用多个进程,每个进程至少有一个线程。单个(和多个)处理器硬件平台上的多线程由context switching完成。这给出了每次处理器运行多个线程的错觉。

+0

非常感谢,是一个有趣的阅读。 –