一个应用程序的主入口一般都是main函数,而main函数的工作基本都是一样的:
- 初始化,如向系统申请各种资源,创建各种视图
- 进入无限循环,(可能你会更愿意说是死循环吧)并在循环中处理各种事件,直到进程退出。
我们以android的应用程序为例。每一个app都由main函数开始它的旅程,Android的main函数不需要开发者去提供,因为它的做的工作都是一样的,所以android系统的开发者将这些工作都模板化了,让开发者关注在自己的业务上。android应用的main函数在ActivityThread.java中,以下是它的一些代码片段:
public static void main(String[] args) {
....
Environment.initForCurrentUser();
Environment.getUserConfigDirectory(UserHandle.myUserId());
TrustedCertificateStore.setDefaultUserDirectory(configDir);
initializeMainlineModules();
Process.setArgV0("<pre-initialized>");
Looper.prepareMainLooper();
long startSeq = 0;
if (args != null) {
for (int i = args.length - 1; i >= 0; --i) {
if (args[i] != null && args[i].startsWith(PROC_START_SEQ_IDENT)) {
startSeq = Long.parseLong(
args[i].substring(PROC_START_SEQ_IDENT.length()));
}
}
}
ActivityThread thread = new ActivityThread();
thread.attach(false, startSeq);
if (sMainThreadHandler == null) {
sMainThreadHandler = thread.getHandler();
}
...
Looper.loop();
throw new RuntimeException("Main thread loop unexpectedly exited");
}
android是由事件驱动的开发模型,因此所有事件都会在循环中被处理。
|