【AMS】Android 8.0+ 繞開啟動后臺Service限制

一、背景

應客戶要求,需要在開機時,拉起應用A。但因為開機時,同時被拉起的應用過多,導致Launcher在開機那一刻較為卡頓。為解決這一問題,采取了延遲拉起的做法。在開機后,延遲一定時間,由系統服務,拉起應用A。

于是乎,就出現這么個報錯:

Not allowed to start service Intent { cmp=com.xxx.xxx/.XXXXService }: app is in background

二、解決方案

方案一:系統簽名

解決這個報錯,有個較為簡單的做法,是將應用A帶上系統簽名,但考慮到應用A后續有他們自己的OTA計劃,我們不可能把系統的簽名文件給他們(涉及安全)。他們也不可能更新應用時,再針對我們的產品,交給我們簽名,再發布特定渠道的應用(流程繁甭)。因此,此方案不可取。

方案二:透明Activity

拉起應用A的透明Activity,再由應用A的透明Activity拉起服務并Finish掉Activity。 這個方案,聽起來可以,但實際操作上會存在一個問題,即在被拉起的一瞬間,用戶的操作會被打斷,出錯短暫的卡頓現象以及焦點變化。因為是延時拉起,不知道此時用戶在做什么操作,導致的后續問題也是未知的,因此,此方案也不可取。

方案三:繞過限制

基于前2種方案, 最終決定,對限制的原因,進行分析。

  • 分析報錯堆棧
2024-05-20 20:27:48.742   549-1975  Activi...nager pid-549              W  Background start not allowed: service Intent { cmp=com.xxx/.XXXService } to com.xxxx/.XXXService from pid=1061 uid=1000 pkg=com.xxxx.xxx startFg?=false
2024-05-20 20:27:48.743  1061-1061  XXXXHelper  com...e.xxx  D  start XXXService failed1111 = Not allowed to start service Intent { cmp=com.xxxx/.XXXService }: app is in background uid null
2024-05-20 20:27:48.743  1061-1061  System.err     com...e.xxx  W  android.app.BackgroundServiceStartNotAllowedException: Not allowed to start service Intent { cmp=com.xxxx/.XXXService }: app is in background uid null
2024-05-20 20:27:48.743  1061-1061                 com...e.xxx  W          at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1908)
2024-05-20 20:27:48.743  1061-1061                 com...e.xxx  W          at android.app.ContextImpl.startService(ContextImpl.java:1864)
2024-05-20 20:27:48.743  1061-1061                 com...e.xxx  W          at com.xxxx.xx.XXXXHelper.startXXXXService(XXXXHelper.java:36)
2024-05-20 20:27:48.744  1061-1061                 com...e.xxx  W          at com.xxxx.xx.XXXXHelper.delayBootApps(XXXXHelper.java:25)
2024-05-20 20:27:48.744  1061-1061                 com...e.xxx  W          at com.xxxx.XXAppService.delayBootApps(XXAppService.java:1161)
2024-05-20 20:27:48.744  1061-1061                 com...e.xxx  W          at com.xxxx.XXAppService.-$$Nest$mdelayBootApps(Unknown Source:0)
2024-05-

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15172.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15172.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue3、vuex和vue-router入門指南

Vue 3、Vuex 和 Vue Router 都是 Vue.js 生態系統中非常有用的庫。它們各自在 Vue.js 應用程序中扮演著重要的角色:Vue 3 是核心框架,Vuex 用于狀態管理,而 Vue Router 用于路由管理。下面是如何在 Vue 3 項目中使用這些庫的簡要說明。 創建…

有趣的css - 移形換位加載動畫

大家好,我是 Just,這里是「設計師工作日常」,今天分享的是一個移形換位動態加載小動效,適用于 app 列表加載,頁面加載或者圖片懶加載等場景。 最新文章通過公眾號「設計師工作日常」發布。 目錄 整體效果核心代碼html…

2024上海初中生古詩文大會倒計時4個月:單選題真題解析(持續)

現在距離2024年初中生古詩文大會還有4個多月時間,我們繼續來看10道選擇題真題和詳細解析,以下題目截取自我獨家制作的在線真題集,都是來自于歷屆真題,去重、合并后,每道題都有參考答案和解析。 為幫助孩子自測和練習&…

C#基礎一

使用Visual Studio 2022(VS2022)編寫C#控制臺程序 1. 安裝Visual Studio 2022 確保已安裝Visual Studio 2022。如果未安裝,請從Visual Studio官網下載并安裝。 另一篇文章中已經有詳細描述,這里就不在細說了。 VisualStudio2022…

【LeetCode】【209】長度最小的子數組(1488字)

文章目錄 [toc]題目描述樣例輸入輸出與解釋樣例1樣例2樣例3 提示進階Python實現前綴和二分查找滑動窗口 個人主頁:丷從心 系列專欄:LeetCode 刷題指南:LeetCode刷題指南 題目描述 給定一個含有n個正整數的數組和一個正整數target找出該數組…

Effective C++(2)

文章目錄 2. 構造、析構、賦值運算條款05:了解C默默編寫并調用哪些函數條款06:若不想使用編譯器自動生成的函數,就該明確拒絕條款07:為多態基類聲明virtual析構函數條款08:別讓異常逃離析構函數條款09:絕不…

微信小程序報錯:notifyBLECharacteristicValueChange:fail:nodescriptor的解決辦法

文章目錄 一、發現問題二、分析問題二、解決問題 一、發現問題 微信小程序報錯:notifyBLECharacteristicValueChange:fail:nodescriptor 二、分析問題 這個提示有點問題,應該是該Characteristic的Descriptor有問題,而不能說nodescriptor。 …

web前端之解決img元素組件自有高度的問題

MENU 前言解決辦法vertical-align 前言 在HTML和CSS中,img元素默認是行內元素(inline element),類似于文本。由于文本有基線(baseline),所以即使是空白的img元素也會占據一定的高度,以便使基線對齊。 解決辦法 要解決這個問題&…

axios如何傳遞數組作為參數,后端又如何接收呢????

前端的參數是一個數組。 前端編寫: 后端接收:

Iterater迭代器和增強for循環

1、Collection接口遍歷元素—Iterator迭代器 看一下下面這張圖片:可以看出Collection接口有一個父接口Iterable,Iterable接口有一個iterator()方法,iterator()方法的類型是Iterator迭代器,實際上當我們使用方法時,返回…

Go語言的pprof工具是如何使用的?

文章目錄 Go語言的pprof工具詳解pprof的使用runtime/pprofnet/http/pprof 快速開始獲取采樣數據通過pprof工具進行性能分析總結 Go語言的pprof工具詳解 Go語言作為一個高性能、高并發的編程語言,對性能優化有著極高的要求。在Go語言的標準庫中,pprof是一…

linux 安全 iptables防火墻 (一)

Linux包過濾防火墻概述 Linux 系統的防火墻 :IP信息包過濾系統,它實際上由兩個組件netfilter 和 iptables組成。 主要工作在網絡層,針對IP數據包。體現在對包內的IP地址、端口、協議等信息的處理上。 兩大組件 netfilter內核組件 iptables應…

blender安裝cats-blender-plugin-0-19-0插件,導入pmx三維模型

UE5系列文章目錄 文章目錄 UE5系列文章目錄前言一、Blender安裝二、cats-blender-plugin-0-19-0插件下載三、下載bmp文件四、在blender2.93中安裝cats-blender-plugin-0-19-0插件 前言 blender本身不支持pmx三維模型,需要用到cats-blender-plugin-0-19-0插件。 一…

構建全面的無障礙學習環境:科技之光,照亮學習之旅

在信息與科技日益發展的當下,為所有人群提供一個包容和平等的學習環境顯得尤為重要,特別是對于盲人朋友而言,無障礙學習環境的構建成為了一項亟待關注與深化的課題。一款名為“蝙蝠避障”的輔助軟件,以其創新的設計理念與實用功能…

Offline RL : Context-Former: Stitching via Latent Conditioned Sequence Modeling

paper 基于HIM的離線RL算法,解決基于序列模型的離線強化學習算法缺乏對序列拼接能力。 Intro 文章提出了ContextFormer,旨在解決決策變換器(Decision Transformer, DT)在軌跡拼接(stitching)能力上的不足…

新定義單片機的說明

新定義的官網是https://www.rdsmcu.com/shop/#/,主要經營的是1T系列的51單片機,之前從他們官網上申請了評估板,自己頁玩了一段時間,不過玩的不多,特開此專欄記錄學習過程,并幫助剛入門的道友快速上手。 我申請的是評估…

DQL(數據查詢)

目錄 1. DQL概念 2. DQL - 編寫順序 3. 基礎查詢 3.1 查詢多個字段 3.2 字段設置別名 3.3 去除重復記錄 3.4 案例 4. 條件查詢 4.1 語法 4.2 條件 4.3 案例: 5. 聚合函數 5.1 常見的聚合函數: 5.2 語法 5.3 案例: 6. 分組查…

VScode SSH連接遠程服務器報錯

一、報錯 通過VScode SSH插件遠程連接服務器,輸入密碼后沒有連接成功,一直跳出輸入密碼界面,在輸出界面里,一直是Waiting for server log或者是顯示Cannot not find minimist 二、處理 🐱: 這個時候應該…

力扣每日一題 5/25

題目: 給你一個下標從 0 開始、長度為 n 的整數數組 nums ,以及整數 indexDifference 和整數 valueDifference 。 你的任務是從范圍 [0, n - 1] 內找出 2 個滿足下述所有條件的下標 i 和 j : abs(i - j) > indexDifference 且abs(nums…

CTF網絡安全大賽web題目:字符?正則?

題目來源于&#xff1a;bugku 題目難度&#xff1a;難 題目描  述: 字符&#xff1f;正則&#xff1f; 題目htmnl源代碼&#xff1a; <code><span style"color: #000000"> <span style"color: #0000BB"><?php <br />highl…