关于ios和安卓app使用流畅性的思考,撇去系统架构,是因为app选择的语言问题吗?


ios的app使用obc,也许也有swift,但都可以视为一类。而Android的app一般都是用java吧,我们不讨论arm上面的NDK。
众所周知,在相同的硬件资源下,甚至是给Android更多的资源,单单在app的使用体验上,大多数人应该可能都是认为ios更胜一筹的。我相信无论ios还是Android程序员应该都是有好好做app的,这里就排除代码劣质问题。
那么问题来了,为什么Android的app总给人一种迟钝感,一下属于个人臆测,我猜:obc基于C,有着良好的内存释放规范,而java是自动的垃圾回收机制,对于手机这种资源稀缺的平台,语言上的限制带来的问题就一下子显著起来了,是这样吗?
有这方面熟悉的前辈吗?望解答:)

Android java ios objective-c

-坑-坑- 9 years, 5 months ago

1,安卓的应用基于Java开发,相比objective-c/Swift编译直接生成字节码,还需要JVM来解释运行。所以对于干同一件事情的代码(算法一致)来说,iOS的应用肯定更“快”。

2,安卓给应用的多任务/后台任务更开发,也就是说安卓的APP可以在后台干更多的事情(占用更多资源),造成的影响就是用户可能前台只是在看看网页啥的设置只是在launcher那里随便滑动有时候都会觉得不流畅。而iOS的后台执行/多任务,诸多限制。

暂时就想到这两点了。

PETER answered 9 years, 5 months ago

其实这个和硬件,语言、系统架构关系已经不是很大了(就拿目前的Android版本和iOS来比较)。
刚出厂的Android设备和iOS设备,还未安装第三方App的情况下,我就问你iOS比Android流畅多少?根本没多大区别吧。
很多用户表示Android用久了就卡,造成这种因素原因有这么几点:
1.国内很多Android系统都是深度定制,更多只是UI上的变化、附带上自己的应用(还不能删除),然而并没有优化系统,反而更加吃内存。
2.不良厂商的App在后台运行了各种Service,你都不知道他干了什么,一直在吃你的内存和流量。更扯蛋的是某些不良厂商为了对付竞争对手的App,直接判断进程名来kill对手的App。我还碰见某厂商会在后台默默的帮你装上其他自己产品的App。
3.而相比iOS根本不存在这种问题,iOS的后台权限很小,你把iOS的App放到后台它只有GPS、音乐播放等几项权限。所以,iOS用户基本就是啥App,想装就装,想用别的App就Home键直接放入后台,本来不用担心卡顿。
4.非常同意楼上@eechen的观点:苹果的CPU都是自家开发定制的,编译器甚至可以针对自家的CPU进行硬件优化。
但是我想说iOS做的最好的还是生态圈(这一块真的是秒杀Android),App Store严格的审核制度,保证了每款App的质量,至少不坑用户。
我个人观点,造成这种局面一大半的原因都是因为第三方厂商。
如果楼主想深度体验Android,请用原生。

大大大的肉棒 answered 9 years, 5 months ago

苹果的CPU都是自家开发定制的,编译器甚至可以针对自家的CPU进行硬件优化,而且应用生成的是机器码,运行效率肯定是要比Android的Java高的.

虽然说Java牺牲了一些性能,但却让应用兼容了不同芯片厂商生产的处理器,有得有失.

不过Android支持Dalvik即时编译JIT和ART预编译AOT,加上现在的硬件性能普遍不错,像499元的红米2A这种入门级Android手机都已经是1GB内存+4核心1.5GHz处理器,所以就算Android应用比iOS慢,但也不至于慢太多.

超爱后宫动漫哟 answered 9 years, 5 months ago

Your Answer