最近做一个项目,关于优化启动速度的。现在有两个地方想不明白,还请大家不吝赐教。
当开机,整个java世界起来以后,system_server也启动了相应的服务后,此时系统开始去启动apk。从home开始启动到显示出来的过程中,我从日志看到的是-----home程序起来的同时,某些应用也是开始启动了,在多数应用启动以后,home才display出来。
1.为什么开机某些apk会运行?,,,比如说LatinIME....(我查看了一下LatinIME的AndroidManifest.xml,并没有接受开机广播)2.为什么是当所有会运行的apk加载到内存以后,home程序才会显示出来?(android机制如此?不能像XP那样快速显示界面而在后台跑其他未完全启动的服务么?)
两个问题想不明白,请朋友们赐教赐教。
当开机,整个java世界起来以后,system_server也启动了相应的服务后,此时系统开始去启动apk。从home开始启动到显示出来的过程中,我从日志看到的是-----home程序起来的同时,某些应用也是开始启动了,在多数应用启动以后,home才display出来。
1.为什么开机某些apk会运行?,,,比如说LatinIME....(我查看了一下LatinIME的AndroidManifest.xml,并没有接受开机广播)2.为什么是当所有会运行的apk加载到内存以后,home程序才会显示出来?(android机制如此?不能像XP那样快速显示界面而在后台跑其他未完全启动的服务么?)
两个问题想不明白,请朋友们赐教赐教。
解决方案 »
- android des加密与c#des加密结果不一样,求高手!
- 如何唤醒一个下层的activity并且将其显示到当前窗口上
- listview数据为何不更新呢
- android如何实现手机之间相互通信
- 蓝牙可不可以直接用rfcomm收发数据流呢?
- 怎么设置输入的EditText字母自动大写
- zip解压出错:java.util.zip.ZipException: EOCD not found; not a Zip archive?
- 关于android开发中,assets目录中加入大数据量
- 怎么小球没运动
- HTML5,更高效地到达更多设备和用户
- OpenGL ES运行出错
- android 源码的飞行模式问题???
通过查看,是因为框架里面的问题。在InputMethodManagerService.java中的
mCurIntent = new Intent(InputMethod.SERVICE_INTERFACE);
mContext.bindService(mCurIntent, this, Context.BIND_AUTO_CREATE);而InputMethod中定义的public static final String SERVICE_INTERFACE = "android.view.InputMethod";。最后每个输入法的apk的AndroidManifest.xml中有
<intent-filter>
<action android:name="android.view.InputMethod" />
</intent-filter>
..所以开机启动了
跪求第二个问题的想法
1,Google的工程师不傻,能够开发android系统,如果连这个一点都不知道,是不可思意的,只能说明有这样猜测的工程师太高估自己的想法了。
2,其次zygote会接受socket的信息来决定是否启动新的进程来运行新apk,如果开始就运行的话,android无需采用这样的形式启动新进程。
3,至于启动慢,据我所知,有扫描sdcard的后台服务在运行,可能还有扫描apk安装信息的数据库,所以绝对不是楼主想的那样。
HOME 就是 Launcher,他本身的功能就是加载 应用程序,启动并在桌面显示相应的图片,那么HOME应该是所有程序最后才加载完成的。。不知道理解的对不对。