android 叠加视图 重启,android-后台应用程序以侦听拖动手势

本文讨论了如何更新服务应用以确保前台运行,使用TYPE_SYSTEM_ALERT而非TYPE_SYSTEM_OVERLAY创建任务切换器,并强调了正确注销叠加视图以避免内存泄漏。作者给出了销毁服务时的正确步骤和注意事项。

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

根据您的链接,您的应用程序可以作为服务运行而无需“正常” UI即可运行,但是我认为您链接的代码可能有些过时了.

请记住,您的服务必须在前台运行-代码在您的链接中提供,但未明确调用.如果不在前台运行,系统很可能会停止您的应用程序,而不是在后台运行它.

当我使用此类叠加创建任务切换器时,我发现有必要使用TYPE_SYSTEM_ALERT而不是TYPE_SYSTEM_OVERLAY.

我声明了没有FLAG_WATCH_OUTSIDE_TOUCH的窗口参数.

WindowManager.LayoutParams params =

new WindowManager.LayoutParams(width, height, x, y,

WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,

WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE

| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,

PixelFormat.TRANSLUCENT);

您的服务还应确保在结束时从WindowManager正确注销叠加视图.否则,您的应用程序将泄漏内存.

public void onDestroy()

{

super.onDestroy();

if (overlay != null)

{

((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(overlay);

overlay = null;

}

}

我看到这是在OverlayView.destory()中完成的(请注意该方法名称的拼写不正确-为该方法使用正确的名称是一个好主意).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值