Android 悬浮窗延时5秒返回APP问题

Posted 早起的年轻人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 悬浮窗延时5秒返回APP问题相关的知识,希望对你有一定的参考价值。

案例需求分析:在APP界面,点击Home键后,APP退出后台,同时会打开一个悬浮窗,当用户点击悬浮窗上的按键会返回APP。

出现的问题是:点击悬浮窗上的按键没有立即返回APP,而是需要延时一段时间才会启动。

解决方案就是:如果需要在手机桌面页面点击悬浮窗上的按键快速返APP内部,就需要给 APP 添加上 APP加上
android.Manifest.permission.STOP_APP_SWITCHES 权限。

AndroidManifest.xml 清单文件中添加如下权限:

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

Android.mk 文件添加如下:

LOCAL_CERTIFICATE := platform

在谷歌的 Android API Guides 中,特意提醒开发者不要在后台启动 activity,包括在 Service 和 BroadcastReceiver 中,这样的设计是为了避免在用户毫不知情的情况下突然中断用户正在进行的工作。

http://developer.android.com/guide/practices/seamlessness.html#interrupt

优雅的解决方式就是 将intent用PendingIntent包裹:

Intent intent = new Intent(applicationContext, PlayActivity.class);
intent.putExtra(InteractionFmMainActivity.INFO_ID_KEY, PlayActivity.sParamsIdKey);
intent.putExtra(InteractionFmMainActivity.INFO_TYPE_KEY,PlayActivity.sParamsInfoTypeKey);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
try 
      PendingIntent pendingIntent = PendingIntent.getActivity(ApplicationGlobal.getGlobalContext(), 0, intent, 0);
                        pendingIntent.send();
      catch (Exception e) 
                        e.printStackTrace();
     

Android.mk 是什么?

Android.mk 文件位于项目 jni/ 目录的子目录中,用于向构建系统描述源文件和共享库。它实际上是一个微小的 GNU makefile 片段,构建系统会将其解析一次或多次,developer开发者官网有详细介绍。

https://developer.android.com/ndk/guides/android_mk?hl=zh-cn

本文章中使用到的 LOCAL_CERTIFICATE := platform

是指在打包签名 应用时APK完成一些系统的核心功能,这种方式编译出来的APK所在进程的UID为system LOCAL。

系统中有4组key用于build阶段对apk进行签名:Media、Platform、Shared、Testkey,下篇文章来概述。


完毕

以上是关于Android 悬浮窗延时5秒返回APP问题的主要内容,如果未能解决你的问题,请参考以下文章

怎么在android悬浮窗口上实现倒计时?

实现Android悬浮窗仅在本APP的所有界面显示

Android实战——系统悬浮窗踩坑记

Android实战——系统悬浮窗踩坑记

android 微信小程序支付 开启显示悬浮窗 权限

Android免权限悬浮窗组件 - FloatingX