详细分析Android中实现Zygote的源码

2020-01-06 13:36:52丽君
  •   try {  
  • sServerSocket = new LocalServerSocket(createFileDescriptor(fileDesc));  } catch(IOException ex) {  
  • throw new RuntimeException("Error binding to local socket '" + fileDesc + "'", ex);  } 
  • }  } 
  •   public class LocalServerSocket { 
  • private final LocalSocketImpl impl;  private final LocalSocketAddress localAddress; 
  •   private static final int LISTEN_BACKLOG = 50; 
  •   /** 
  • * Create a LocalServerSocket from a file descriptor that's already  * been created and bound. listen() will be called immediately on it. 
  • * Used for cases where file descriptors are passed in via environment  * variables. 
  • */  public LocalServerSocket(FileDescriptor fd) throws IOException { 
  • impl = new LocalSocketImpl(fd);  impl.listen(LISTEN_BACKLOG); 
  • localAddress = impl.getSockAddress();  } 
  • registerZygoteSocket很简单,就是创建一个服务端的socket。

    预加载类和资源——preload

    我们先来看一下preload函数实现:

     

     
    1. static void preload()  { 
    2. preloadClasses();  preloadResources(); 
    3. preloadOpenGL();  }