Launcher.java(apckages/apps/launcher)
继承Activity
onCreate()中startLoaders()
startLoaders()中sModel.loadApplications(),sModel是一个LauncherModel对象
LauncherModel.java
loadApplications()中startApplicationLoaderLocked()启动了一个线程(叫ApplicationsLoader)来加载。
ApplicationsLoader(Thread,实现Runnable)的run()方法,PackageManager 加载应用程序信息、查询activity列表,参数:第一次加载所有,之后加载改变过的。
查grateview的onClick事件
Launcher.java
onClick()得到当前应用程序(选中的)信息,主要是intent信息,启动activity。
manifest中配置,launcher,主activity
packageManagerService的功劳
Launcher和ACTION_BOOT_COMPLETED的启动顺序?
launcher在前。
点击图标能否不启动界面,直接启动service?点击一个应用程序图标开始,发生了什么事?
(在manifest直接配置为启动主service。)不能直接启动一个service。只能启动activity,查询也只查询activity。这种配置,应用安装上,launcher无法加载和识别,不会在launcher中显示。
应用程序退出
主动退出方法
finish()--主要针对activity
System.exit()
restartPackage()
Activity Stack
被动退出,涉及虚拟机,后面单独讲