如何使用 Android 7 新增功能阻止 App 的相互喚醒?

背景:

Android 7.0新增了一個AppOps項:RUN_IN_BACKGROUND,可以用來限制指定APP的後台行為,具體說明如下:

  • https://developer.android.com/topic/performance/background-optimization.html

  • Android 7的新AppOps項:RUN_IN_BACKGROUND到底做了什麼 - ff FF的文章 - 知乎專欄

問題:

如何使用該功能限制APP的後台行為?對於國產毒瘤實際效果如何?


本答案不再維護,更新內容移至專欄

【Android 7.0專享】沒Root如何限制APP後台喚醒? - 白兔Jack的文章 - 知乎專欄

「不需要ROOT」「必須是Android 7.0」

「不需要ROOT」「必須是Android 7.0」

「不需要ROOT」「必須是Android 7.0」

*****************************************************

方法概述:

在未ROOT的Android 7.0上,為減少卡頓,增加續航,可以:

1、使用綠色守護,自動殺滅指定後台進程

2、使用adb命令,限制APP後台自動喚醒

同時使用以上兩條方法,可達到較好效果。

*****************************************************

綠色守護:

推薦「全自動化休眠」,可在屏幕關閉後,自動殺滅指定後台進程。

若使用「指紋解鎖」,請選擇「特殊方式關屏」,並按提示完成相應設置。

以上功能不需要ROOT。

下載地址:

Greenify綠色守護(com.oasisfeng.greenify)_3.0 build 1_Android應用

*****************************************************

限制後台喚醒:

第一步:準備工作

a、電腦安裝 ADB

b、電腦安裝universal Android USB driver

c、手機開啟USB調試

以上準備已足夠,若遇到問題,可參考:

How to grant permissions required by some features on non-root device?

第二步:輸入命令

打開CMD或Poweshell,輸入如下命令

$ adb shell cmd appops set

RUN_IN_BACKGROUND ignore

舉例如下:

限制手機百度adb shell cmd appops set com.baidu.searchbox RUN_IN_BACKGROUND ignore

限制支付寶adb shell cmd appops set com.eg.android.AlipayGphone RUN_IN_BACKGROUND ignore

以上命令,可限制指定APP後台自動喚醒。一般與「綠色守護」綠色化列表保持一致即可,不需要對全部APP都設置。

該命令僅適用於Android 7.0。

*****************************************************

「操作方法已經講完」以下是補充內容

操作方法已經講完」以下是補充內容

操作方法已經講完」以下是補充內容

*****************************************************

常見問題:

一、如何查看APP的package_name?

方法A(推薦):

手機信息大全:Android System Info(com.electricsheep.asi)_1.26.2_Android應用

方法B:

輸入以下命令,列出所有第三方APP的包名,拷貝即可

adb shell "pm list packages -3"

二、如何還原RUN_IN_BACKGROUND狀態?

輸入下面命令,即可還原

$ adb shell cmd appops set

RUN_IN_BACKGROUND allow

*****************************************************

RUN_IN_BACKGROUND的作用

理論:

當把一個應用的RUN_IN_BACKGROUND設為ignore之後:

1,應用在AndroidManifest.xml註冊的用於接收隱式廣播的receiver都會失效,換個方向就是說隱式廣播無法啟動這個應用了

2,應用不能啟動Service(不包括通過bindService綁定的Service)。現有的後台Service(不包括前台Service)在一分鐘後會被系統殺掉。

3,應用註冊的alarm/job/sync全部沒有了,也不能再註冊了

參考:

Android 7的新AppOps項:RUN_IN_BACKGROUND到底做了什麼 - ff FF的文章 - 知乎專欄

實測:

美團系:

  • 可以阻止美團、大眾點評、貓眼之間的互相喚醒。

  • 不能阻止大眾點評自動喚醒(JobService),但喚醒頻率很低。

阿里系:

  • 可以大幅減少阿里系後台喚醒:

  • 不能阻止支付寶喚醒高德地圖(AMapService);

  • 不能阻止飛豬喚醒支付寶 (Authenticated);

百度系:

  • 不能阻止百度系(ShareService)相互喚醒;
  • 不能阻止Uber被百度系喚醒(RegistrationReceiver);

其它:

  • 不能阻止Bilibili自動喚醒(JobService),但喚醒頻率很低。
  • 對豆瓣、網易等APP效果明顯;

總結:

該方法可阻止大多數後台喚醒。


沒卵用,我葉良辰有一百種方法讓我的APP賴在你的內存里不走


買一個iPod touch專門收信息用。。。


原生安卓有個個功能叫添加用戶,就在下拉通知欄上的那個小人點進去,一開始有Guest和你自己的賬號。

你可以用相同的賬號登錄,在不用用戶桌面安裝不用等APP。然後你就可以隨意裝APP了,你可以創建各種全家桶用戶,不用的時候不要切換到那個用戶里。

因為你的常用用戶沒有安裝全家桶,也就不存在喚醒的說法。


希望谷歌不要增加一個「探測是否被綠化」的介面,不然又會像6.0的許可權管理一樣,不給不讓用。

國內外各大毒瘤:我就是針對谷歌,我要說,你的機制就是辣雞

不要以為這東西就能治毒瘤


果然還是……買個ipod專門裝毒瘤

沒有毒瘤的android真是清靜


匿名用戶的新建用戶方法,經測試發現雖然應用不會在主用戶相互喚醒,但是另外一個用戶的進程一樣會留在後台佔用內存。。我也不知道什麼情況,系統是索尼c6802的歐版的5.1.1,看最下面。


我的EMUI自帶這個哎


除非你不用國內的app,否則各種喚醒各種後台駐留原生系統管不了的


三星S8,現在絕是流氓APP的剋星了。因為裡面有個叫安全文件夾的東東,類似WINDOWS的沙盒。不但與主系統完全隔離,裡頭使用的APP, 還能輕鬆地建立快捷方式,放在主屏上。隨時輕鬆點進去,隨時使用。

下圖是我手機的兩個微信。最左邊是沙盒微信的快捷方式,最右邊是主系統的微信。

三星沙盒官方簡介


可以試下


推薦閱讀:

有哪些比較實用又有格調的 App?
Android 平台有哪些對大屏幕支持很好的應用?
為什麼 「WiFi 萬能鑰匙」突然成了眾矢之的?

TAG:Android應用 | Android | Android流氓應用 | AndroidN |