[Anatomy of Android] System Services

Hoje vamos entender um pouco do System Services do android.

Boa leitura…

O System Services do android é um conjunto de cerca de 60-80 serviços que fornecem aos aplicativos do usuário as informações e recursos necessários para funcionar. Todos esses serviços dependem do Binder para se comunicar e colaborarem entre si. Além disso, os aplicativos podem instanciar esses serviços através do Binder. A maioria é escrita em Java, com excessão de algumas escritas em C/C++. A razão é que esses serviços em C/C++ dependem da aceleração de hardware ou precisam de uma implementação de alto desempenho. Um bom exemplo é o serviço do sensor ou o surface flinger. Outros serviços como de câmera ou media player, fazem um extensivo uso de código nativo através de chamadas a JNI.

System Server

Entre todos os serviços destacamos um deles, o System Server. O que torna ele tão especial? Ele é o governante, eu gosto de chamá-lo, o Darth Vader to sistema. Este serviço inicia todos os outros serviços, mas não apenas isso, ele também inicializa a infraestrutura de arquivos, com diretórios críticos como /data/user. Ele cria cada serviço e o adiciona ao Service Manager. A maioria desses serviços é construída em Java, como você pode ver na figura abaixo. Esses serviços são compatíveis com JNI, então não fique surpreso em encontrar chamadas JNI para o código nativo.

Se você quer que seu android inicie de forma rápida, você apenas tem que comentar alguns desses serviços. Além disso, você pode querer substituir alguns desses serviços pela sua própria implementação. Se você quiser seu próprio serviço de wallpaper por exemplo, você pode modificar o serviço você mesmo ou substituir ele completamente. Modificar seria mais fácil, no entanto. Você também pode tornar algum serviço Java nativo.

A seguir, um pequeno snippet das ações que ocorrem no System Server (SystemServer.java).

Eu não vou falar sobre o Media Service agora, que requer vários posts e eu não quero fazer isso muito pesado. Em um próximo dia nós vamos falar sobre o Services Manager.

Publicação original

Leave a Comment

Your email address will not be published. Required fields are marked *