<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->
在init.rc檔案裡,可以看到載入下面的服務:
service bootanim /system/bin/bootanimation
user graphics
group graphics
disabled
oneshot
bootanimation 服務的代碼在目錄:
Android-2.0/frameworks/base/cmds/bootanimation
bootanimation 服務是開機動畫,主要用來載入動畫資源。
它的主要入口函數代碼如下:
int main(int argc, char** argv)
{
#if defined(HAVE_PTHREADS)
setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_DISPLAY);
#endif
這段代碼設定進程的優先順序。
char value[PROPERTY_VALUE_MAX];
property_get("debug.sf.nobootanimation", value, "0");
這行代碼從屬性裡擷取是否顯示開機動畫,如果為1就不顯示。
int noBootAnimation = atoi(value);
LOGI_IF(noBootAnimation, "boot animation disabled");
if (!noBootAnimation) {
這段代碼判斷是否顯示開機動畫。
sp<ProcessState> proc(ProcessState::self());
ProcessState::self()->startThreadPool();
啟動開機動畫的線程。
// create the boot animation object
sp<BootAnimation> boot = new BootAnimation();
建立開機動畫對象。
IPCThreadState::self()->joinThreadPool();
運行開機動畫線程。
}
return 0;
}