IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android T 前台Service -> 正文阅读

[移动开发]android T 前台Service

获取android 13

用户控制: 用户在长时间运行的应用程序上获得更多透明度和控制权:

  • 前台服务仍然需要包含通知,并且应用程序必须请求权限才能显示通知。
  • FGS 通知现在可以被用户关闭而不影响 FGS
  • 用户可以在任务管理器中查看长时间运行的应用列表
    • 任务管理器还允许用户停止应用程序

通知权限

在这里插入图片描述

介绍

权限定义

  1. android T 之前的通知:默认允许通知推送,需要用户跳转至多级设置页面去设置通知权限。
  2. android T新增前台服务的通知权限(运行时权限):

使用

权限使用

  1. android 13及以上: 应用自行控制权限对话框显示时间
  2. android 12L 及以下: 通常应用启动时弹框

豁免:与媒体会话有关的通知不受此行为变更的影响。

代码

在ServiceRecord的构造方法中会回调updateFgsHasNotificationPermission方法,去异步(避免死锁)从NMS中去获取此app是否有权限发送通知;ServiceRecord仅记录,具体权限校验在NMS中。

// ServiceRecord.java
// Whether FGS package has permissions to show notifications.
boolean mFgsHasNotificationPermission;


private void updateFgsHasNotificationPermission() {
    // Do asynchronous communication with notification manager to avoid deadlocks.
    final String localPackageName = packageName;
    final int appUid = appInfo.uid;

    ams.mHandler.post(new Runnable() {
        public void run() {
            NotificationManagerInternal nm = LocalServices.getService(
                    NotificationManagerInternal.class);
            if (nm == null) {
                return;
            }
            // Record whether the package has permission to notify the user
            mFgsHasNotificationPermission = nm.areNotificationsEnabledForPackage(
                    localPackageName, appUid);
        }
    });
}

前台服务任务管理器

介绍

前台任务管理器
无论app的目标sdk版本是多少,android 13上都允许用户从抽屉式通知栏中停止前台服务(整个应用)。停止原因在ApplicationExitInfo表现为REASON_USER_REQUESTED。

在这里插入图片描述在这里插入图片描述

豁免

以下应用可以运行前台服务,而完全不会显示在任务管理器中:

  • 系统级应用
  • 安全应用,即具有 ROLE_EMERGENCY 角色的应用
  • 处于演示模式的设备上的应用

当以下类型的应用运行前台服务时,它们会显示在 FGS 任务管理器中,但应用名称旁边没有可以供用户按的停止按钮:

  • 设备所有者应用
  • 资料所有者应用
  • 常驻应用
  • 具有 ROLE_DIALER 角色的应用

测试

adb shell cmd activity stop-app PACKAGE_NAME

监控长期运行的前台服务

介绍

长时间运行服务通知
如果系统检测到您的应用长时间运行某项前台服务(在 24 小时的时间段内至少运行 20 小时),便会发送通知邀请用户与前台服务 (FGS) 任务管理器互动。该通知包含以下内容:

APP is running in the background for a long time. Tap to review.

如果前台服务的类型为 FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK 或 FOREGROUND_SERVICE_TYPE_LOCATION,系统将不会显示此通知。

代码

  1. 谷歌提交记录
commit 64ac1a923065d38fa33789b315c716f4c93312fc
Author: Jing Ji <jji@google.com>
Date:   Sat Dec 11 03:14:45 2021 -0800

    Monitor long-running foreground services
    
    If a certain package has foreground services running for a long time,
    say the accumulated durations over last X hours are more than Y hours,
    system will post a notification to remind the user.
    
    Some type of apps are subjected to be exempted, i.e. if it's already
    in the device idle allowlist. More exemption could be added in
    the follow-up CLs.
    
    Bug: 200326767
    Bug: 203105544
    Test: atest FrameworksMockingServicesTests:BackgroundRestrictionTest
    Change-Id: I3a8f34c33e7a533240abc7cf4fa569a0956eec73
  1. 主要逻辑在新增的类:
//  监控滥用(长时间运行)FGS 的跟踪器
frameworks/base/services/core/java/com/android/server/am/AppFGSTracker.java 

显示长时间运行通知

static final long DEFAULT_BG_FGS_LONG_RUNNING_THRESHOLD = 20 * ONE_HOUR;

对应的流程如下:
在这里插入图片描述

移除长时间运行通知

若FGS已经停止运行则取消该通知
在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:16:33  更:2022-04-29 12:17:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:33:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码