完成了最重要(对启动流程而言)的布局获取,剩下还需要进行Launcher的准备工作。
首先是mIconCache和WidgetPreviewLoader的构造。
LauncherAppState构造器所创建第二个对象是IconCache,其代码如下:
在IconCache类是存放图标中图片的信息。其中创建IconDB对象
public IconCache(Context context, InvariantDeviceProfile inv) {
mContext = context;
mPackageManager = context.getPackageManager();
mUserManager = UserManagerCompat.getInstance(mContext);
mLauncherApps = LauncherAppsCompat.getInstance(mContext);
mIconDpi = inv.fillResIconDpi;
mIconDb = new IconDB(context, inv.iconBitmapSize);
mLowResCanvas = new Canvas();
mLowResPaint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.ANTI_ALIAS_FLAG);
mIconProvider = Utilities.getOverrideObject(
IconProvider.class, context, R.string.icon_provider_class);
mWorkerHandler = new Handler(LauncherModel.getWorkerLooper());
mActivityBgColor = Themes.getColorPrimary(context, R.style.LauncherTheme);
mPackageBgColor = Themes.getColorPrimary(context, R.style.WidgetContainerTheme);
mLowResOptions = new BitmapFactory.Options();
mLowResOptions.inPreferredConfig = Bitmap.Config.RGB_565;
}
以上代码除了参数赋值外,我们关注IconDB的创建代码,其代码如下:
mIconDb = new IconDB(context, inv.iconBitmapSize);
其中IconDB是继承至SQLiteCacheHelper的。创建IconDB会查询或创建一个名叫“