• Android 10 如何在通知栏下拉状态栏会暂停第三方应用播放视频


    前言

    在第三方视频类APP在进行播放时,若是下拉通知栏则会让播放暂停,对于第三方应用我们是没有代码,只能在源码中去拦截该分发焦点的地方。
    原因:通知栏和系统弹窗弹出时会暂时获取窗口焦点,而并不会pause前台的activity(取消则会让前台activity重新获取焦点)

    代码路径

    frameworks/basecore/java/android/view/ViewRootImpl.java

    修改记录

    在ViewRootImpl.java文件中handleWindowFocusChanged()方法来分发窗口焦点

    diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
    index 3cd2b1e8500..218213ee251 100644
    --- a/core/java/android/view/ViewRootImpl.java
    +++ b/core/java/android/view/ViewRootImpl.java
    @@ -118,7 +118,6 @@ import com.android.internal.util.Preconditions;
     import com.android.internal.view.BaseSurfaceHolder;
     import com.android.internal.view.RootViewSurfaceTaker;
     import com.android.internal.view.SurfaceCallbackHelper;
    
     import java.io.FileDescriptor;
     import java.io.IOException;
     import java.io.OutputStream;
    @@ -130,7 +129,7 @@ import java.util.LinkedList;
     import java.util.List;
     import java.util.Queue;
     import java.util.concurrent.CountDownLatch;
    
     /**
      * The top of a view hierarchy, implementing the needed protocol between View
      * and the WindowManager.  This is for the most part an internal implementation
    @@ -2906,7 +2905,9 @@ public class ViewRootImpl extends AbsViewRootImpl implements ViewParent,
                 }
                 if (mView != null) {
                     mAttachInfo.mKeyDispatchState.reset();
    -                mView.dispatchWindowFocusChanged(hasWindowFocus);
    +                if ("根据包名类名来过滤是否分发焦点") {
    +                    mView.dispatchWindowFocusChanged(hasWindowFocus);
    +                }
                     mAttachInfo.mTreeObserver.dispatchOnWindowFocusChange(hasWindowFocus);
                     if (mAttachInfo.mTooltipHost != null) {
                         mAttachInfo.mTooltipHost.hideTooltip();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
  • 相关阅读:
    2022秋季快手面试经历
    20220706_JavaScript语法_变量定义_运算符_流程控制_函数定义
    Java集合(个人整理笔记)
    小满Vue3第三十九章(Vue开发桌面程序Electron)
    Linux - 大括号的妙用
    如何用SVG画一个特定边框
    【SpringBoot】之创建自定义 SpringBoot-Starter
    RISC-V特权架构 - 中断与异常概述
    深入了解HarmonyOS(鸿蒙操作系统)
    计算机组成原理历年考研真题对应知识点(计算机系统层次结构)
  • 原文地址:https://blog.csdn.net/wq892373445/article/details/127748152