网站首页 > 技术文章 正文
案例需求分析:在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,下篇文章来概述。
完毕
猜你喜欢
- 2024-10-27 NDK开发——FFmpeg视频解码 ffmpeg ndk
- 2024-10-27 Camera基本代码架构 camera calibrator
- 2024-10-27 android 功耗分析方法和优化(1) 功耗app
- 2024-10-27 Cocos Creator v2.3.2 发布了!全新 Launcher 效率飞起!
- 2024-10-27 如何androd动态注册编写计算器 淘宝动态评分计算器在线
- 2024-10-27 高通平台OV8856 Camera的bring up总结
- 2024-10-27 高通平台移植GC2145 Camera驱动 高通驱动安装
- 2024-10-27 《坎公骑冠剑》光炮Android Mk.99技能与背景故事
- 2024-10-27 ubuntu移植libwebp到Android平台 ubuntu移植到arm
- 2024-10-27 步步为营,十分钟学会 Native JNI(附带彩蛋)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)