android8.1 去除android正在启动弹窗

在启动launcher前,系統先启动了一个FallbackHome的界面,接着再启动launcher,,即先显示一段时间的壁紙,再启动launcher。

在使用定制launcher的时候,在进入launcher之前,就先显示了一张壁纸,看起来会很不协调。

解决思路是延长开机动画显示(即是开机动画结束之前,FallbackHome的流程已经finish)

service.bootanim.exit这个属性是结束退出开机动画的
复制代码
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
old mode 100644
new mode 100755
index 5ac2552..9f218e8
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -3522,13 +3522,15 @@ public class WindowManagerService extends IWindowManager.Stub
                     && getDefaultDisplayContentLocked().checkWaitingForWindows()) {
                 return;
             }
-
+            
+/* 
             if (!mBootAnimationStopped) {
                 Trace.asyncTraceBegin(TRACE_TAG_WINDOW_MANAGER, "Stop bootanim", 0);
                 // stop boot animation
                 // formerly we would just kill the process, but we now ask it to exit so it
                 // can choose where to stop the animation.
                 SystemProperties.set("service.bootanim.exit", "1");
+                Log.d("wmc","service.bootanim.exit....");
                 mBootAnimationStopped = true;
             }
 
@@ -3550,7 +3552,7 @@ public class WindowManagerService extends IWindowManager.Stub
             } catch (RemoteException ex) {
                 Slog.e(TAG_WM, "Boot completed: SurfaceFlinger is dead!");
             }
-
+*/
复制代码

这里屏蔽了系統结束开机动画的代码,那就得找一个地方结束开机动画,从而启动launcher。

复制代码
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
old mode 100644
new mode 100755
index ee23d63..166bbd5
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -181,6 +181,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Objects;
+import android.os.SystemProperties;
 
 /**
  * An entry in the history stack, representing an activity.
@@ -1926,13 +1927,33 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
         }
     }
 
+    private void stopBootanim() {
+        boolean wallpaperEnabled = service.mContext.getResources().getBoolean(
+            com.android.internal.R.bool.config_enableWallpaperService);
+        if(wallpaperEnabled){
+            Log.d(TAG,"----Launcher drawn done,not keyguradk,has wallpaper,ummmmmm----");
+            try {
+                    Thread.sleep(1000);
+            } catch (Exception e) {
+            }
+        }
+        Log.d("wmc","----launcher drawn done,exit bootanim----");
+        SystemProperties.set("service.bootanim.exit", "1");
+   }
+
     @Override
     public void onWindowsDrawn(long timestamp) {
+          //start 退出开机动画
+        if(shortComponentName!=null && !shortComponentName.contains(".FallbackHome")
+          && !"1".equals(SystemProperties.get("service.bootanim.exit"))){
+              stopBootanim();
+        }
         synchronized (service) {
             mStackSupervisor.mActivityMetricsLogger.notifyWindowsDrawn(getStackId(), timestamp);
             if (displayStartTime != 0) {
                 reportLaunchTimeLocked(timestamp);
             }
+
             mStackSupervisor.sendWaitingVisibleReportLocked(this);
             startTime = 0;
             finishLaunchTickingLocked();
复制代码

参考:https://blog.csdn.net/androidzmm/article/details/128285719

http://hk.javashuo.com/article/p-ulodmqym-dx.html

 
posted @   M-kobe  阅读(0)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示