# RUN_IN_BACKGROUND/RUN_ANY_IN_BACKGROUND(在後臺執行)

在 App Ops 應用中看到的「在後臺執行」實際是指 RUN_IN_BACKGROUND(Android 7 起增加)和 RUN_ANY_IN_BACKGROUND(Android 9 起增加)這兩個 op。在不同的系統版本上,改變這些 op 會有不同的行為。

這篇文章將會說明在 Android 9 上修改 RUN_IN_BACKGROUNDRUN_ANY_IN_BACKGROUND 對應用行為的影響。

# App Ops 應用所做的特殊處理

為了應對 Android 9 新增加的 RUN_ANY_IN_BACKGROUND,App Ops v2.6.0 以前採取這樣的策略:直接將 RUN_IN_BACKGROUNDRUN_ANY_IN_BACKGROUND 視為同一個,即只會看到一個「在後臺執行」選項,修改時會同時修改這兩個。但部分特殊情況下,同時設定兩個會造成限制過於嚴格的問題,因此從 v2.6.0 起可以自行選擇限制哪一個。

# RUN_IN_BACKGROUND

文章尚未完成,更多資訊將在以後補充

所有 target API 在 26 及以上的應用會受到此限制。

參考以下文章:

https://developer.android.com/about/versions/oreo/background

# RUN_ANY_IN_BACKGROUND

文章尚未完成,更多資訊將在以後補充

參考以下文章:

https://developer.android.com/about/versions/pie/power#battery-saver

https://developer.android.com/topic/performance/power/power-details

部分涉及的 commit:

https://github.com/aosp-mirror/platform_frameworks_base/commit/3ac1daac4044c70ad4ee673214074306de499a18

https://github.com/aosp-mirror/platform_frameworks_base/commit/db6bf66ee3b82edf25874d5dea4e02b0a146fb16