Android 11 Recent按键流程

Posted 虫师魁拔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 11 Recent按键流程相关的知识,希望对你有一定的参考价值。

Recent 按键有三种,实体按键、虚拟导航键、手势导航。除了手势导航外(主要是launcher中监听滑动事件判断处理:Android 手势导航),实体按键和虚拟导航键流程基本一致,只有前面监听的方式不同:

一、实体按键监听

按键上报到 PhoneWindowManager.java 中,按照 KeyEvent.KEYCODE_APP_SWITCH 按键事件处理执行 statusbar.toggleRecentApps() ,实现在 StatusBarManagerService.toggleRecentApps() 方法中。

        @Override
        public 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按键流程的主要内容,如果未能解决你的问题,请参考以下文章

Android 11 Recent按键流程

[RK3568 Android11]Framework层获取和处理按键事件流程总结

[RK3568 Android11]Framework层获取和处理按键事件流程总结

android 4.0 屏蔽 HOME_KEY 和 RECENT_APP_KEY

Android 7.0 Power 按键处理流程

Android TV 按键焦点事件分发流程详解