Android 12.0 禁用系统app启动动画SplashScreen

android 12开始增加了新的功能,在app启动时会默认闪一下app的icon界面。

可以通过一下方法,从framework部分将这个功能默认关闭。参考文章如下:
https://blog.csdn.net/qq_44256828/article/details/129652422

这部分功能相关的代码位置在
frameworks/base/libs/windowmanager/shell/src/com/android/wm/shell/startingsurface目录。

一种方法:
frameworks/base/libs/windowmanager/shell/src/com/android/wm/shell/startingsurface/StartingWindowController.java中,注释addStartingWindow中的内容。

   public void addStartingWindow(StartingWindowInfo windowInfo) {
//        mSplashScreenExecutor.execute(() -> {
//            Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "addStartingWindow");
//
//            final int suggestionType = mStartingWindowTypeAlgorithm.getSuggestedWindowType(
//                    windowInfo);
//            final RunningTaskInfo runningTaskInfo = windowInfo.taskInfo;
//            if (suggestionType == STARTING_WINDOW_TYPE_WINDOWLESS) {
//                mStartingSurfaceDrawer.addWindowlessStartingSurface(windowInfo);
//            } else if (isSplashScreenType(suggestionType)) {
//                mStartingSurfaceDrawer.addSplashScreenStartingWindow(windowInfo, suggestionType);
//            } else if (suggestionType == STARTING_WINDOW_TYPE_SNAPSHOT) {
//                final TaskSnapshot snapshot = windowInfo.taskSnapshot;
//                mStartingSurfaceDrawer.makeTaskSnapshotWindow(windowInfo, snapshot);
//            }
//            if (suggestionType != STARTING_WINDOW_TYPE_NONE
//                    && suggestionType != STARTING_WINDOW_TYPE_WINDOWLESS) {
//                int taskId = runningTaskInfo.taskId;
//                int color = mStartingSurfaceDrawer
//                        .getStartingWindowBackgroundColorForTask(taskId);
//                if (color != Color.TRANSPARENT) {
//                    synchronized (mTaskBackgroundColors) {
//                        mTaskBackgroundColors.append(taskId, color);
//                    }
//                }
//                if (mTaskLaunchingCallback != null && isSplashScreenType(suggestionType)) {
//                    mTaskLaunchingCallback.accept(taskId, suggestionType, color);
//                }
//            }
//
//            Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
//        });
    }

另一种方法:
在frameworks/base/services/core/java/com/android/server/wm/TaskOrganzierController.java中

    boolean addStartingWindow(Task task, ActivityRecord activity, int launchTheme,
            TaskSnapshot taskSnapshot) {
        final Task rootTask = task.getRootTask();
        if (rootTask == null || activity.mStartingData == null) {
            return false;
        }
        final ITaskOrganizer lastOrganizer = getTaskOrganizer();
        if (lastOrganizer == null) {
            return false;
        }
        final StartingWindowInfo info = task.getStartingWindowInfo(activity);
        if (launchTheme != 0) {
            info.splashScreenThemeResId = launchTheme;
        }
        info.taskSnapshot = taskSnapshot;
        info.appToken = activity.token;
        // make this happen prior than prepare surface
//        try {
//            lastOrganizer.addStartingWindow(info);
//        } catch (RemoteException e) {
//            Slog.e(TAG, "Exception sending onTaskStart callback", e);
//            return false;
//        }
        return true;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值