96SEO 2026-02-20 04:11 18
[frameworks/base/services/java/com/android/server/SystemServer.java]

WindowManagerService.main(context,
mActivityManagerService.mActivityTaskManager);ServiceManager.addService(Context.WINDOW_SERVICE,
false,DUMP_FLAG_PRIORITY_CRITICAL
中mActivityManagerService.setWindowManager(wm);wm.onInitReady();...try
wm.computeNewConfiguration(DEFAULT_DISPLAY);DisplayMetrics
DisplayMetrics();context.getDisplay().getMetrics(metrics);context.getResources().updateConfiguration(config,
onInitReadydisplayReadysystemReadyupdateConfiguration
[frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java]
policy,ActivityTaskManagerService
DisplayWindowSettingsProvider(),
SurfaceControl.Transaction::new,
Surface::new,SurfaceControl.Builder::new);
policy,ActivityTaskManagerService
DisplayWindowSettingsProviderdisplayWindowSettingsProvider,
SupplierSurfaceControl.Transaction
transactionFactory,SupplierSurface
surfaceFactory,FunctionSurfaceSession,
{DisplayThread.getHandler().runWithScissors(()
surfaceFactory,surfaceControlFactory),
policy,ActivityTaskManagerService
DisplayWindowSettingsProviderdisplayWindowSettingsProvider,
SupplierSurfaceControl.Transaction
transactionFactory,SupplierSurface
surfaceFactory,FunctionSurfaceSession,
ActivityTaskManagerServicemGlobalLock
atm.getGlobalLock();mAtmService
mContext.getPackageManager().hasSystemFeature(FEATURE_PC);mAllowBootMessages
LocalServices.getService(DisplayManagerInternal.class);//
surfaceControlFactory;mTransactionFactory
transactionFactory;mSurfaceFactory
mTransactionFactory.get();mPolicy
RootWindowContainer(this);final
context.getContentResolver();mUseBLAST
Settings.Global.getInt(resolver,Settings.Global.DEVELOPMENT_USE_BLAST_ADAPTER_VR,
BLASTSyncEngine(this);mWindowPlacerLocked
WindowSurfacePlacer(this);mTaskSnapshotController
TaskSnapshotController(this);mWindowTracing
WindowTracing.createDefaultAndStartLooper(this,Choreographer.getInstance());LocalServices.addService(WindowManagerPolicy.class,
(DisplayManager)context.getSystemService(Context.DISPLAY_SERVICE);mKeyguardDisableHandler
KeyguardDisableHandler.create(mContext,
(PowerManager)context.getSystemService(Context.POWER_SERVICE);mPowerManagerInternal
LocalServices.getService(PowerManagerInternal.class);if
{mPowerManagerInternal.registerLowPowerModeObserver(new
PowerManagerInternal.LowPowerModeListener()
ServiceType.ANIMATION;}Overridepublic
onLowPowerModeChanged(PowerSaveState
!mAllowAnimationsInLowPowerMode)
enabled;dispatchNewAnimatorScaleLocked(null);}}}});mAnimationsDisabled
mPowerManagerInternal.getLowPowerState(ServiceType.ANIMATION).batterySaverEnabled;}mScreenFrozenLock
mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
SCREEN_FROZEN);mScreenFrozenLock.setReferenceCounted(false);mDisplayNotificationController
DisplayWindowListenerController(this);//
ActivityManager.getService();mActivityTaskManager
ActivityTaskManager.getService();mAmInternal
LocalServices.getService(ActivityManagerInternal.class);mAtmInternal
LocalServices.getService(ActivityTaskManagerInternal.class);...
的构造函数的代码非常长其中有包含各种服务我们这里只关注和我们应用
IllegalArgumentException(runnable
IllegalArgumentException(timeout
monitors.Watchdog.getInstance().addMonitor(this);createWatermark();showEmulatorDisplayOverlayIfNeeded();
{UiThread.getHandler().runWithScissors(new
{WindowManagerPolicyThread.set(Thread.currentThread(),
PhoneWindowManager【5.1】mPolicy.init(mContext,
PhoneWindowManagerrunWithScissors
前面介绍过了如果是当前线程就直接运行如果不是当前线程就阻塞运行。
File(/system/etc/setup.conf);FileInputStream
getDefaultDisplayContentLocked();mWatermark
displayContent.mRealDisplayMetrics,toks,
mTransaction);mTransaction.apply();}}}
[frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java]
{mRoot.forAllDisplays(displayContent
displayContent.setMaxUiWidth(mMaxUiWidth));}applyForcedPropertiesForDefaultDisplay();mAnimator.ready();mDisplayReady
createWatermark重新配置所有显示器大小mRoot.forAllDisplays(DisplayContent::reconfigureDisplayLocked);//
mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN);mIsFakeTouchDevice
mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FAKETOUCH);}try
ATMSmActivityTaskManager.updateConfiguration(null);}
[frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java]
systemReadymPolicy.systemReady();//
systemReadymRoot.forAllDisplayPolicies(DisplayPolicy::systemReady);//
systemReadymTaskSnapshotController.systemReady();mHasWideColorGamutSupport
queryWideColorGamutSupport();mHasHdrSupport
加载系统设置UiThread.getHandler().post(mSettingsObserver::loadSettings);//
IVrManager.Stub.asInterface(ServiceManager.getService(Context.VR_SERVICE));if
vrManager.getVrModeState();synchronized
{vrManager.registerListener(mVrStateCallbacks);if
vrModeEnabled;mVrStateCallbacks.onVrStateChanged(vrModeEnabled);}}}
computeNewConfigurationLocked(displayId);}
computeNewConfigurationLocked(int
mRoot.getDisplayContent(displayId);displayContent.computeScreenConfiguration(config);return
mRootRootWindowContainer获取显示指定设备的
[frameworks/base/services/core/java/com/android/server/DisplayThread.java]
Process.THREAD_PRIORITY_DISPLAY
Process.THREAD_PRIORITY_FOREGROUND,
groupProcess.setThreadGroup(Process.myTid(),
Process.THREAD_GROUP_TOP_APP);super.run();}UiThread
THREAD_PRIORITY_FOREGROUND值为-2,所以
[frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java]
interceptKeyBeforeQueueing(KeyEvent
{wakeUpFromPowerKey(event.getDownTime());}
isWakeKeyWhenScreenOff(keyCode))
(!hasLongPressOnBackBehavior())
~ACTION_PASS_TO_USER;}}break;}case
KeyEvent.KEYCODE_VOLUME_DOWN:case
KeyEvent.KEYCODE_VOLUME_UP:返回值是一个整型如果是
就表示被拦截一开始的电源按键我们就看到了在系统没有启动前电源按键只能用于系统启动但是系统启动后电源按键就可以用于其他的作用了例如语音助手。
如果你还没有掌握Framework现在想要在最短的时间里吃透它可以参考一下《Android
Framework核心知识点》里面内容包含了Init、Zygote、SystemServer、Binder、Handler、AMS、PMS、Launcher……等知识点记录。
核心知识点汇总手册》:https://qr18.cn/AQpN4J
Android系统的启动过程及Zygote的启动过程应用进程的启动过程
Activity生命周期管理onActivityResult执行过程AMS中Activity栈管理详解
Framework学习手册》https://qr18.cn/AQpN4J
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback