admin管理员组文章数量:1585025
这两种图标的添加都会走AddWorkspaceItemsTask.java,打断点就可以跟踪流程的发起和图标更新。
联系人中点击菜单可以添加快捷方式到桌面
Google play下载应用桌面显示下载进度图标
0、注册监听
LauncherAppState.java
InstallSessionTracker installSessionTracker =
InstallSessionHelper.INSTANCE.get(context).registerInstallTracker(mModel);
InstallSessionHelper.java
public InstallSessionTracker registerInstallTracker(InstallSessionTracker.Callback callback) {
//创建跟踪器
InstallSessionTracker tracker = new InstallSessionTracker(this, callback);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
mInstaller.registerSessionCallback(tracker, MODEL_EXECUTOR.getHandler());
} else {
//注册应用安装回调,当系统安装应用时会回调注册的tracker
mLauncherApps.registerPackageInstallerSessionCallback(MODEL_EXECUTOR, tracker);
}
return tracker;
}
1、创建图标
InstallSessionTracker.java
@Override
public void onCreated(int sessionId) {
//根据系统回调的sessionId获取sessionInfo
SessionInfo sessionInfo = pushSessionDisplayToLauncher(sessionId);
if (sessionInfo != null) {
mCallback.onInstallSessionCreated(PackageInstallInfo.fromInstallingState(sessionInfo));
}
//创建图标
mInstallerCompat.tryQueuePromiseAppIcon(sessionInfo);
}
2、更新进度
InstallSessionTracker.java
//系统回调更新图标进度
public void onProgressChanged(int sessionId, float progress) {
SessionInfo session = mInstallerCompat.getVerifiedSessionInfo(sessionId);
if (session != null && session.getAppPackageName() != null) {
mCallback.onPackageStateChanged(PackageInstallInfo.fromInstallingState(session));
}
}
PackageInstallStateChangedTask.java
...
//更新下载进度的数据
List<AppInfo> updatedAppInfos = apps.updatePromiseInstallInfo(mInstallInfo);
...
//更新界面
if (!updates.isEmpty()) {
scheduleCallbackTask(callbacks -> callbacks.bindRestoreItemsChange(updates));
}
BubbleTextView.java
//更新进度绘制图标
public PreloadIconDrawable applyProgressLevel() {
...
preloadIconDrawable.setLevel(progressLevel);
...
}
3、下载完成
InstallSessionTracker.java
public void onFinished(int sessionId, boolean success) {
...
mCallback.onPackageStateChanged(info);
if (!success && mInstallerCompat.promiseIconAddedForId(sessionId)) {
mCallback.onSessionFailure(packageName, key.mUser);
// If it is successful, the id is removed in the the package added flow.
mInstallerCompat.removePromiseIconId(sessionId);
}
...
}
下载进度简单记录到这。后续遇到问题再详细跟进~
版权声明:本文标题:add to home screen、Google play下载应用launcher显示下载进度图标 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727955776a1139464.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论