手机QQ后台清理不掉的秘密——anddroid悬浮窗

文章深入探讨了手机QQ后台无法彻底清除的原因,揭示了一个关键的秘密——1像素的悬浮窗。通过添加这样一个看似微不足道的元素,QQ得以在后台始终保持运行状态。文章详细解释了如何实现这一功能,并探究了其背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题来自于一篇文章:手机QQ后台为何清不掉?MIUI工程师:全靠1像素的页面保命

出于好奇,想知道这一像素到底是啥东西,用手机安全管家控制QQ的悬浮窗权限:

关闭QQ的悬浮窗权限,通过后台一键清理,重新打开QQ,发现是从splash开始的;

打开QQ的悬浮窗权限,一键清理后,打开QQ,发现是直接进入主界面的;说明一键清理未清理QQ,或者清理之后,QQ又自启动了。

至于,是未被清理还是自启动,后面再探究一下,这里就说说这个一像素的悬浮窗。

        Button button = new Button(getApplicationContext());
        WindowManager wm = (WindowManager) getApplicationContext()
                .getSystemService(Context.WINDOW_SERVICE);
        WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();

        /**
         * 以下都是WindowManager.LayoutParams的相关属性 具体用途请参考SDK文档
         */
        wmParams.type = LayoutParams.TYPE_PHONE; // 这里是关键,你也可以试试2003
        wmParams.format = PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明
        /**
         * 这里的flags也很关键 代码实际是wmParams.flags |= FLAG_NOT_FOCUSABLE;
         * 40的由来是wmParams的默认属性(32)+ FLAG_NOT_FOCUSABLE(8)
         */
        wmParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
                | LayoutParams.FLAG_NOT_FOCUSABLE
                | LayoutParams.FLAG_NOT_TOUCHABLE;
        wmParams.width = 40;
        wmParams.height = 40;
        wm.addView(button, wmParams); // 创建View

添加权限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

就这么简单添加了一个悬浮窗,不管返回launcher还是打开什么应用,都会一直显示这个button。

QQ的这个悬浮窗是做得比较小,应该还是透明的,还会放在靠边或者角落里,如果通过这个悬浮窗来保证QQ始终在后台进程,带我再探究一下。



评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值