代码改变世界

手机系统中多任务处理方式的一种新想法——无责任YY

2010-04-10 09:24 by JimLiu, ... 阅读, ... 评论, 收藏, 编辑

说是无责任YY,因为我没设计过操作系统,也不知道做操作系统有多难。

现在的手机还没法把多任务处理的很好,让我感觉稍微好点的,反而是“古老”的Symbian S60。因为是手机的硬件不够强大,所以这也是没办法的事情。不过我昨天YY了一种新方法:

规定应用程序维护两个消息循环(通过这个词应该可以看出我被Windows编程所侵蚀了,呃……),一个前台循环,主要负责UI和操控;一个后台循环,主要负责网络、音频、地理定位、接收系统推送的通知等。这样当任务切换到后台的时候,前台循环就挂起,后台循环继续活动。就可以节省很多CPU资源。

不过这样,前台循环占用的大量内存还是得不到释放,这显然对于手机这样内存捉襟见肘的设备是奢侈的。所以我又YY了一种方法,就是前台和后台通过进程/线程间通讯来交换数据,比如共享内存的方法。这部分内存是必须得有的,后台循环必须负责更新和处理他们,前台读取来反应到UI上,UI上发生操控的时候也有一部分数据要写入共享区。但是前台本身的内存是单独享有的,前台挂起的时候可以把这部分内存swap起来,反正前台的进程/线程都挂起了,这部分内存占着空间也没用。

这样只是对现在的编程多了一些要求而已,但是开发者不会受很大的影响。如果不注册后台循环,程序就不具备多任务功能,一关就咪西咪西了,不能在后台执行;如果不注册前台循环,程序简单地退化成系统服务。

嗯,很好很YY。