版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android后臺運行白名單實現(xiàn)保活的方法
在下給大家分享一下Android后臺運行白名單實現(xiàn)?;畹姆椒ǎ嘈糯蟛糠秩硕歼€不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!?;瞵F(xiàn)狀我們知道,Android系統(tǒng)會存在殺后臺進程的情況,并且隨著系統(tǒng)版本的更新,殺進程的力度還有越來越大的趨勢。系統(tǒng)這種做法本身出發(fā)點是好的,因為可以節(jié)省內(nèi)存,降低功耗,也避免了一些流氓行為。但有一部分應(yīng)用,應(yīng)用本身的使用場景就需要在后臺運行,用戶也是愿意讓它在后臺運行的,比如跑步類應(yīng)用。一方面流氓軟件用各種流氓手段進行?;?,另一方面系統(tǒng)加大殺后臺的力度,導(dǎo)致我們一些真正需要在后臺運行的應(yīng)用被誤殺,苦不堪言。優(yōu)雅?;??為了做到?;?,出現(xiàn)了不少「黑科技」,比如1個像素的Activity,播放無聲音頻,雙進程互相守護等。這些做法可以說是很流氓了,甚至破壞了Android的生態(tài),好在隨著Android系統(tǒng)版本的更新,這些非常規(guī)的?;钍侄魏芏喽家咽Я?。對于那些確實需要在后臺運行的應(yīng)用,我們?nèi)绾巫龅絻?yōu)雅的保活呢?后臺運行白名單從Android6.0開始,系統(tǒng)為了省電增加了休眠模式,系統(tǒng)待機一段時間后,會殺死后臺正在運行的進程。但系統(tǒng)會有一個后臺運行白名單,白名單里的應(yīng)用將不會受到影響,在原生系統(tǒng)下,通過「設(shè)置」-「電池」-「電池優(yōu)化」-「未優(yōu)化應(yīng)用」,可以看到這個白名單,通常會看到下面這兩位:下次被產(chǎn)品說「XXX都可以?;睿瑸槭裁次覀儾恍?!」的時候,你就知道怎么懟回去了。大廠通過和手機廠商的合作,將自己的應(yīng)用默認加入到白名單中。如果你在一個能談成這種合作的大廠,也就不用往下看了。好在系統(tǒng)還沒有拋棄我們,允許我們申請把應(yīng)用加入白名單。首先,可以通過以下方法,判斷我們的應(yīng)用是否在白名單中:<uses-permission
android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"
/>如果不在白名單中,可以通過以下代碼申請加入白名單:@RequiresApi(api
=
Build.VERSION_CODES.M)
private
boolean
isIgnoringBatteryOptimizations()
{
boolean
isIgnoring
=
false;
PowerManager
powerManager
=
(PowerManager)
getSystemService(Context.POWER_SERVICE);
if
(powerManager
!=
null)
{
isIgnoring
=
powerManager.isIgnoringBatteryOptimizations(getPackageName());
}
return
isIgnoring;
}申請時,應(yīng)用上會出現(xiàn)這樣一個窗口:可以看到,這個系統(tǒng)彈窗會有影響電池續(xù)航的提醒,所以如果想讓用戶點允許,必須要有相關(guān)的說明。如果要判斷用戶是否點擊了允許,可以在申請的時候調(diào)用startActivityForResult,在onActivityResult里再判斷一次是否在白名單中。廠商后臺管理Android開發(fā)的一個難點在于,各大手機廠商對原生系統(tǒng)進行了不同的定制,導(dǎo)致我們需要進行不同的適配,后臺管理就是一個很好的體現(xiàn)。幾乎各個廠商都有自己的后臺管理,就算應(yīng)用加入了后臺運行白名單,仍然可能會被廠商自己的后臺管理干掉。如果能把應(yīng)用加入廠商系統(tǒng)的后臺管理白名單,可以進一步降低進程被殺的概率。不同的廠商在不同的地方進行設(shè)置,一般是在各自的「手機管家」,但更難的是,就算同一個廠商的系統(tǒng),不同的版本也可能是在不同地方設(shè)置。最理想的做法是,我們根據(jù)不同手機,甚至是不同的系統(tǒng)版本,給用戶呈現(xiàn)一個圖文操作步驟,并且提供一個按鈕,直接跳轉(zhuǎn)到指定頁面進行設(shè)置。但需要對每個廠商每個版本進行適配,工作量是比較大的。我使用真機測試了大部分主流Android廠商的手機后,整理出了部分手機的相關(guān)資料。首先我們可以定義這樣兩個方法:/**
*
跳轉(zhuǎn)到指定應(yīng)用的首頁
*/
private
void
showActivity(@NonNull
String
packageName)
{
Intent
intent
=
getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(intent);
}
/**
*
跳轉(zhuǎn)到指定應(yīng)用的指定頁面
*/
private
void
showActivity(@NonNull
String
packageName,
@NonNull
String
activityDir)
{
Intent
intent
=
new
Intent();
intent.setComponent(new
ComponentName(packageName,
activityDir));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}以下是部分手機的廠商判斷,跳轉(zhuǎn)方法及對應(yīng)設(shè)置步驟,跳轉(zhuǎn)方法不保證在所有版本上都能成功跳轉(zhuǎn),都需要加trycatch。華為廠商判斷public
boolean
isHuawei()
{
if
(Build.BRAND
==
null)
{
return
false;
}
else
{
return
Build.BRAND.toLowerCase().equals("huawei")
||
Build.BRAND.toLowerCase().equals("honor");
}
}跳轉(zhuǎn)華為手機管家的啟動管理頁:private
void
goHuaweiSetting()
{
try
{
showActivity("com.huawei.systemmanager",
"com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity");
}
catch
(Exception
e)
{
showActivity("com.huawei.systemmanager",
"com.huawei.systemmanager.optimize.bootstart.BootStartActivity");
}
}操作步驟:應(yīng)用啟動管理->關(guān)閉應(yīng)用開關(guān)->打開允許自啟動小米廠商判斷public
static
boolean
isXiaomi()
{
return
Build.BRAND
!=
null
&&
Build.BRAND.toLowerCase().equals("xiaomi");
}跳轉(zhuǎn)小米安全中心的自啟動管理頁面:private
void
goXiaomiSetting()
{
showActivity("com.miui.securitycenter",
"com.miui.permcenter.autostart.AutoStartManagementActivity");
}操作步驟:授權(quán)管理->自啟動管理->允許應(yīng)用自啟動OPPO廠商判斷public
static
boolean
isOPPO()
{
return
Build.BRAND
!=
null
&&
Build.BRAND.toLowerCase().equals("oppo");
}跳轉(zhuǎn)OPPO手機管家:private
void
goOPPOSetting()
{
try
{
showActivity("com.coloros.phonemanager");
}
catch
(Exception
e1)
{
try
{
showActivity("com.oppo.safe");
}
catch
(Exception
e2)
{
try
{
showActivity("com.coloros.oppoguardelf");
}
catch
(Exception
e3)
{
showActivity("com.coloros.safecenter");
}
}
}
}操作步驟:權(quán)限隱私->自啟動管理->允許應(yīng)用自啟動VIVO廠商判斷public
static
boolean
isVIVO()
{
return
Build.BRAND
!=
null
&&
Build.BRAND.toLowerCase().equals("vivo");
}跳轉(zhuǎn)VIVO手機管家:private
void
goVIVOSetting()
{
showActivity("com.iqoo.secure");
}操作步驟:權(quán)限管理->自啟動->允許應(yīng)用自啟動魅族廠商判斷public
static
boolean
isMeizu()
{
return
Build.BRAND
!=
null
&&
Build.BRAND.toLowerCase().equals("meizu");
}跳轉(zhuǎn)魅族手機管家:private
void
goMeizuSetting()
{
showActivity("com.meizu.safe");
}操作步驟:權(quán)限管理->后臺管理->點擊應(yīng)用->允許后臺運行三星廠商判斷public
static
boolean
isSamsung()
{
return
Build.BRAND
!=
null
&&
Build.BRAND.toLowerCase().equals("samsung");
}跳轉(zhuǎn)三星智能管理器:private
void
goSamsungSetting()
{
try
{
showActivity("com.samsung.android.sm_cn");
}
catch
(Exception
e)
{
showActivity("com.samsung.android.sm");
}
}操作步驟:自動運行應(yīng)用程序->打開應(yīng)用開關(guān)->電池管理->未監(jiān)視的應(yīng)用程序->添加應(yīng)用樂視廠商判斷public
static
boolean
isLeTV()
{
return
Build.BRAND
!=
null
&&
Build.BRAND.toLowerCase().equals("letv");
}跳轉(zhuǎn)樂視手機管家:private
void
goLetvSetting()
{
showActivity("com.letv.android.letvsafe",
"com.letv.android.letvsafe.AutobootManageActivity");
}操作步驟:自啟動管理->允許應(yīng)用自啟動錘子廠商判斷
public
static
boolean
isSmartisan()
{
return
Build.BRAND
!=
null
&&
Build.BRAND.toLowerCase().equals("smartisan");
}跳轉(zhuǎn)手機管理:private
void
goSmartisanSetting()
{
showActivity("com.smartisanos.security");
}操作步驟:權(quán)限管理->自啟動權(quán)限管理->
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版小漁船買賣合同含船舶性能評估及交易保障3篇
- 2025年度跨境電商店鋪租賃及物流服務(wù)合同
- 2025年全球及中國真空拾取筆行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年度個人與公司間信用借款合同規(guī)范3篇
- 二零二五年度采石場安全生產(chǎn)監(jiān)管服務(wù)合同3篇
- 二零二五年度電子元器件ROHS檢測與供應(yīng)鏈管理協(xié)議3篇
- 高效學(xué)習(xí)與時間管理的藝術(shù)
- 2025版?zhèn)€人民間借款合同書范本:個人光伏發(fā)電設(shè)備貸款合作協(xié)議4篇
- 潮州2024年廣東潮州市科學(xué)技術(shù)局屬下事業(yè)單位招聘10人(第二輪)筆試歷年參考題庫附帶答案詳解
- 2025版房地產(chǎn)開發(fā)項目部安全生產(chǎn)責(zé)任保障協(xié)議3篇
- 衛(wèi)生服務(wù)個人基本信息表
- 醫(yī)學(xué)脂質(zhì)的構(gòu)成功能及分析專題課件
- 高技能人才培養(yǎng)的策略創(chuàng)新與實踐路徑
- 廣東省湛江市廉江市2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2024年湖北省知名中小學(xué)教聯(lián)體聯(lián)盟中考語文一模試卷
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 生物 含解析
- 交叉口同向可變車道動態(tài)控制與信號配時優(yōu)化研究
- 燃氣行業(yè)有限空間作業(yè)安全管理制度
- 數(shù)列練習(xí)題(含答案)基礎(chǔ)知識點
- 人教版(2024新版)七年級上冊英語期中+期末學(xué)業(yè)質(zhì)量測試卷 2套(含答案)
- 安華農(nóng)業(yè)保險股份有限公司北京市地方財政生豬價格指數(shù)保險條款(風(fēng)險敏感型)
評論
0/150
提交評論