本文主要是介绍Android 11 Recent按键流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Recent 按键有三种,实体按键、虚拟导航键、手势导航。除了手势导航外(主要是launcher中监听滑动事件判断处理:Android 手势导航),实体按键和虚拟导航键流程基本一致,只有前面监听的方式不同:
一、实体按键监听
按键上报到 PhoneWindowManager.java 中,按照 KeyEvent.KEYCODE_APP_SWITCH 按键事件处理执行 statusbar.toggleRecentApps() ,实现在 StatusBarManagerService.toggleRecentApps() 方法中。
@Overridepublic void toggleRecentApps() {if (mBar != null) {try {mBar.toggleRecentApps();} catch (RemoteException ex) {}}}
这里 mBar.toggleRecentApps() 通过 Binder 机制跨进程调用 SystemUI 中的 CommandQueue toggleRecentApps()
二、虚拟导航键监听
NavigationBarFragment 中对 RecentsButton 注册监听回调 onRecentsClick
private void onRecentsClick(View v) {if (LatencyTracker.isEnabled(getContext())) {LatencyTracker.getInstance(getContext()).onActionStart(LatencyTracker.ACTION_TOGGLE_RECENTS);}mStatusBarLazy.get().awakenDreams();mCommandQueue.toggleRecentApps();}
点击虚拟导航栏的 RecentsButton 就执行 CommandQueue toggleRecentApps()
三、Recent 加载
Android 在9.0之前 Recents 是在 SystemUI 模块中,从9.0后 Recents 分开在 SystemUI 和 Launcher 中,最终由 Launcher 进行界面显示。
这篇关于Android 11 Recent按键流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!