下面部分写的比较零散,整合了一下,可以移步到最新一篇:
http://blog.csdn.net/xxm282828/article/details/49095839
通常情况下,Android系统开机保持在20s~25s应该算是合格比较好的状态。
最近几天在看关于Android系统开机启动过程的相关内容。做个笔记。
关于有话Android系统开机时间有话,采取三个措施有话,修改ZygoteInit.java。 Android系统开机启动过程这里就不说了,网上很多大牛对应的文章。
1. 修改ZygoteInit.java 中预加载资源函数preload() , preloadClasses(); 与 preloadResources(); 并行加载。
2. 修改读取配置信息过程中GC频率。
3. 提升进程优先级。
1.
static void preload() {
//
Thread preloadRsThread = new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
//将该资源加载放在子线程中 。加载资源文件要比加载classes文件要快,因此这里不提升子线程优先级。
preloadResources();
}
}) ;
preloadRsThread.start() ;
preloadClasses();
//wait preloadRes complete.
try {
preloadRsThread.join() ;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//暴露什么问题。
preloadOpenGL();
}
2.
/**
* Performs Zygote process initialization. Loads and initializes
* commonly used classes.
*
* Most classes only cause a few hundred bytes to be allocated, but
* a few will allocate a dozen Kbytes (in one case, 500+K).
*/
private static void preloadClasses() {
final VMRuntime runtime = VMRuntime.getRuntime();
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(
PR