LauncherShowAllApps

:lol: 最近在学习Launcher
对加载APPS这一块总结了一下,有2块:Load,Bind。
这里偏重于load,如何取出了APPS的title、icon、packagename
可以用于APPS的展现的修改


Launcher.java
LauncherApplication app = ((LauncherApplication)getApplication());
mModel = app.setLauncher(this); //初始化mModel.initialize(launcher);
mIconCache = app.getIconCache();

if (!mRestoring) {
mModel.startLoader(this, true);
} //进入了LanucherModel,开始加载


LanucherModel.java
oldThread.stopLocked(); //等待旧进程
mLoaderThread = new LoaderThread(context, oldThread, isLaunching);
mLoaderThread.start();

private void loadAndBindAllApps() {

if (!loaded) {
loadAllAppsByBatch();

再次调用的话 loaded = mAllAppsLoaded;
mAllAppsLoaded = true;
就会直接进入 else {
onlyBindAllApps();

mAllAppsList.add(new ApplicationInfo(apps.get(i), mIconCache));
//将取得的值放入AllAppsList
如何取值后面再说

callbacks.bindAllApplications(added);
} else {
callbacks.bindAppsAdded(added);
} //绑定应用


下面,来说如何传值
mAllAppsList.add(new ApplicationInfo(apps.get(i), mIconCache));
看ApplicationInfo public ApplicationInfo(ResolveInfo info, IconCache iconCache) {
iconCache.getTitleAndIcon(this, info);

进入getTitleAndIcon
CacheEntry entry = cacheLocked(application.componentName, info);

mCache.put(componentName, entry);
entry.title = info.loadLabel(mPackageManager).toString(); //取得标题
entry.icon = Utilities.createIconBitmap(
info.activityInfo.loadIcon(mPackageManager), mContext); //取得图片

application.title = entry.title;
application.titleBitmap = entry.titleBitmap;
application.iconBitmap = entry.icon;

回到AllAppList
里面对应用进行了操作 add remove update

要想对应用的显示进行操作,必须有唯一标识 一般选择应用的包名
如何取得包名 看removePackage
final ComponentName component = info.intent.getComponent();
if (packageName.equals(component.getPackageName())) {

同理:如果你想在应用的GRID中显示你需要的应用
就在add方法中加入判断对data.add(info);
added.add(info); 进行操作

应用程序的GRID AllApps2D
从 final ApplicationInfo info = getItem(position);

所有值都存在于
public ApplicationInfo(ApplicationInfo info) {
super(info);
componentName = info.componentName;
title = info.title.toString();
intent = new Intent(info.intent);
}

要是想知道为什么能取得值,请进framework里查看取值类的源码


写的很简单,有错误或遗漏什么请大家点出,讨论一下。 :lol:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值