Android6.0新特性講解

參考鏈接:leanote.com/blog/post/561658f938f41126b2000298

本文描述了Android6.0在運行時權(quán)限培愁、存儲、電源管理方面的改進定续,譯自官方文檔私股。

目錄:

一 運行時權(quán)限

受影響的權(quán)限

請求

權(quán)限遷移

二 存儲:

權(quán)限

運行時權(quán)限

三 電源管理

AppStandby

生命周期

Doze

生命周期

集成Doze

豁免應(yīng)用

參考鏈接

一 運行時權(quán)限

Android6.0 引入了一個新的應(yīng)用權(quán)限模型,期望對用戶更容易理解供嚎,更易用和更安全峭状。該模型將標記為危險的權(quán)限從安裝時權(quán)限(Install Time Permission)模型 移動到 運行時權(quán)限模型(Runtime Permissions):

安裝時權(quán)限模型(Android5.1以及更早)优床。用戶在應(yīng)用安裝和更新時,對危險權(quán)限授權(quán)胆敞。但是OEM和運行商預裝的應(yīng)用將自動預授權(quán)。

運行時權(quán)限(Android6.0及以后)仍翰。用戶在應(yīng)用運行時歉备,對應(yīng)用授予危險權(quán)限。由應(yīng)用決定何時去申請權(quán)限(例如喧笔,在應(yīng)用啟動時或者用戶訪問某個特性時)龟再,但必須容許用戶來授予或者拒絕應(yīng)用對特定權(quán)限組的訪問。OEM和運營商 可以預裝應(yīng)用浆劲,但是不能對權(quán)限進行預授權(quán)(例外情況請看這里Create exception)哀澈。

運行時權(quán)限提供給用戶關(guān)于應(yīng)用所需權(quán)限更多的相關(guān)上下文和可視性,這也讓開發(fā)者幫助用戶更好的理解:為什么應(yīng)用需要所請求的權(quán)限膨报,授權(quán)將有什么樣的好處适荣,拒絕將有何種不便。用戶可以通過設(shè)置中的菜單來撤銷應(yīng)用的權(quán)限够吩。

受影響的權(quán)限

系統(tǒng)要求標記為危險(dangerous)的權(quán)限使用運行時權(quán)限模型丈氓。查看危險權(quán)限列表可以使用命令:adb shell pm list permissions -g -d。

Android6.0并不改變正常權(quán)限的行為鱼鼓。正常權(quán)限指的是所有非危險(non-dangerous)權(quán)限该编,包括normal课竣,system和signature 權(quán)限。正常權(quán)限風險較低公条,用于容許應(yīng)用以最小風險來訪問隔離的應(yīng)用級別的特性迂曲。在Android5.1和早期版本中,系統(tǒng)在安裝時自動將正常權(quán)限授予請求的應(yīng)用关霸,并不提示用戶杰扫。

請求

運行時權(quán)限模型適用于所有應(yīng)用,包括預裝應(yīng)用佳遣。應(yīng)用軟件的要求包括:

運行時權(quán)限模型必須在所有運行Android6.0的設(shè)備上是一致的凡伊。這通過CTS來實施。

應(yīng)用必須在運行時提示用戶進行授權(quán)诵盼。

帶有危險權(quán)限的預裝應(yīng)用笨觅,必須符合API level 23见剩,必須維護Android6.0的AOSP權(quán)限模型(例如,應(yīng)用安裝的UI流程不應(yīng)該脫離AOSP的packageInstaller的實現(xiàn)苍苞;用戶可以撤銷預裝應(yīng)用的危險權(quán)限羹呵;等等)。

無界面的應(yīng)用必須使用Activity來申請權(quán)限歉铝,或者與其他有相應(yīng)權(quán)限的應(yīng)用共享UID凑耻。細節(jié)請參考Headless applications柠贤。

權(quán)限遷移

在設(shè)備從Android5.x升級到Android6.0之后臼勉,授予應(yīng)用的權(quán)限仍然有效餐弱。但是用戶可以在任何時候撤銷這些權(quán)限。

二 存儲:

從Android6.0開始瓢谢,Android支持移動存儲(adoptable storage)降允,例如SD卡或者USB。移動存儲可以像內(nèi)部存儲一樣加密和格式化幢尚,可以存儲所有類型的應(yīng)用數(shù)據(jù)翅楼。

權(quán)限

是否訪問外部存儲由各種Android權(quán)限保護毅臊。

從Android1.0開始,寫訪問需要 WRITE_EXTERNAL_STORAGE 權(quán)限皂林;

從Android4.0開始蚯撩,讀訪問需要READ_EXTERNAL_STORAGE。

從Android4.4開始沟启,外部存儲設(shè)備上的文件犹菇,也能夠基于目錄結(jié)構(gòu)來合成(synthesized )不同的DAC權(quán)限(owner,group胳搞,mode)。這容許應(yīng)用能夠在外部存儲上管理一個包相關(guān)的目錄币厕,而無需WRITE_EXTERNAL_STORAGE 芽腾。例如摊滔, 應(yīng)用com.example.foo 可以自由訪問外部存儲上的Android/data/com.example.foo/店乐。這種合成權(quán)限是通過fuse守護來包裹原始存儲設(shè)備來完成的。

運行時權(quán)限

Android6.0 引入了新的運行時權(quán)限(runtime permissions)模型腺兴,用于應(yīng)用在運行中必要時申請權(quán)限廉侧。由于新模型包含了READ/WRITE_EXTERNAL_STORAGE,因此平臺需要在不殺死或者重啟運行中的應(yīng)用的前提下闰蚕,動態(tài)對存儲訪問授權(quán)连舍。這是通過維護所有掛載的存儲設(shè)備的三個不同視圖來實現(xiàn)的:

/mnt/runtime/default 對所有的應(yīng)用索赏、root名字空間(adb 和其他系統(tǒng)組件)可見,而無需任何權(quán)限

/mnt/runtime/read 對有READ_EXTERNAL_STORAGE權(quán)限的應(yīng)用可見埃儿。

/mnt/runtime/write 對有WRITE_EXTERNAL_STORAGE權(quán)限的應(yīng)用可見砾赔。

在zygote fork時,我們?yōu)槊總€運行中的應(yīng)用創(chuàng)建一個mount名字空間暴心,在其中bind mount合適的初始視圖。然后悯衬,當被授予運行時權(quán)限時,vold在運行中的應(yīng)用的名字空間上策橘,通過bind mount來更新視圖娜亿。注意买决,如果權(quán)限被撤銷示罗,將意味著該應(yīng)用被kill。

系統(tǒng)使用setns()函數(shù)來實現(xiàn)上述特性躲舌,這要求Linux3.8,不過Linux3.4加上補丁上也可以支持該功能。

在Android6.0中羹奉,第三方應(yīng)用不再被加入sdcard_r和sdcard_rw組中尘奏。相反病蛉,通過給應(yīng)用掛載合適的運行時視圖,實現(xiàn)對外部存儲的訪問控制俗孝。同時魄健,使用everybodyGID來進行的跨用戶交互被禁止了沽瘦。

三 電源管理

Android6.0引入了下列特性來延長電池使用時間:

App Standby(應(yīng)用待機)。系統(tǒng)可以將未使用的應(yīng)用置為AppStandby模式良哲,臨時限制這些應(yīng)用的網(wǎng)絡(luò)訪問助隧,延遲同步和后臺job

Doze(瞌睡)。如果用戶在某個時間期限內(nèi)未主動使用設(shè)備(屏幕關(guān)閉巍实、設(shè)備靜止),平臺將進入深度睡眠狀態(tài)令漂。因為該特性要求平臺檢測靜止狀態(tài)丸边,因此只有那些在Sensor HAL中實現(xiàn)了顯式移動檢測API的設(shè)備中才有效原环。

Exemptions(豁免)处窥。預裝在設(shè)備上的系統(tǒng)應(yīng)用和云消息服務(wù),默認通常被豁免谒麦。應(yīng)用開發(fā)者可以要求其應(yīng)用使用這種設(shè)定哆致。用戶也可以在設(shè)置中來豁免某些應(yīng)用摊阀。

AppStandby

對于不常用的應(yīng)用的耻蛇,AppStandby通過延遲后臺網(wǎng)絡(luò)活動和任務(wù)來延長電池壽命。

生命周期

檢測:當設(shè)備不在充電時胞此,且在某個特定時鐘期限內(nèi)和亮屏時長中臣咖,用戶沒有直接或者間接啟動該應(yīng)用。間接啟動指的是:前臺應(yīng)用訪問另外某個應(yīng)用的service漱牵。

App Standy模式中:平臺限制應(yīng)用一天內(nèi)最多訪問一次網(wǎng)絡(luò)夺蛇,延遲其同步和其他后臺任務(wù)。

退出:當應(yīng)用被激活酣胀,或者設(shè)備充電時刁赦,平臺將該應(yīng)用移出App Standby狀態(tài)。

活動的應(yīng)用不受AppStandby的影響闻镶。活動的含義是:

進程處于前臺(Activity 或者 前臺服務(wù)儒溉,或者 由另外一個Activity 或 前臺服務(wù)所使用)宦焦,例如 notification listener,輔助服務(wù),live 墻紙波闹,等等

供用戶查看的通知酝豪,可以是鎖屏通知或者通知圖標。

用戶顯式啟動的應(yīng)用精堕。

Doze

支持Doze功能的要求:

設(shè)備在Sensor HAL實現(xiàn)了significant motion detector (SMD) APIs 孵淘。

設(shè)備有某個云消息服務(wù),如 Google Cloud Messaging (GCM)歹篓。這使得設(shè)備可以知道何時從Doze中喚醒瘫证。

生命周期

檢測:當未在充電時,且當設(shè)備靜止且滅屏了一段時間庄撮。

Doze期間: 平臺嘗試讓系統(tǒng)處于休眠狀態(tài)背捌,周期性地進入在一個維持窗口恢復正常操作,然后進入更長的休眠狀態(tài)洞斯。在休眠狀態(tài):

禁止網(wǎng)絡(luò)訪問

忽略 wakelock

延遲鬧鐘毡庆,除了鬧鈴 和使用setAndAllowWhileIdle()設(shè)置的鬧鐘,以榮喜日歷等應(yīng)用顯示事件提醒

停止WIFI掃描

同步和后臺任務(wù)被推遲到下一個維護窗口烙如。

接收短信和MMS消息的應(yīng)用位于一個臨時白名單么抗,這樣他們可以完成其工作。

退出

用戶交互

設(shè)備移動

亮屏

鬧鈴

集成Doze

確認設(shè)備支持 SENSOR_TYPE_SIGNIFICANT_MOTION .

確認設(shè)備安裝了一種云消息服務(wù)亚铁。蝇刀??徘溢?吞琐?

在配置文件overlay/frameworks/base/core/res/res/values/config.xml中,修改:bool name=”config_enableAutoPowerModes”>true

檢查裝應(yīng)用和服務(wù):

Use the new power-saving optimization guidelines. For details, see Testing and optimizing applications.

OR甸昏,Are exempted from Doze and App Standby. For details, see Exempting applications.

確認必要的服務(wù)從Doze中豁免顽分。

豁免應(yīng)用

你可以在設(shè)置中,手動將某些應(yīng)用從Doze和AppStandby中排除施蜜。

參考鏈接

AOSP官方網(wǎng)站

Power Management

Runtime Permissions

Storage

友情鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卒蘸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子翻默,更是在濱河造成了極大的恐慌缸沃,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件修械,死亡現(xiàn)場離奇詭異趾牧,居然都是意外死亡,警方通過查閱死者的電腦和手機肯污,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門翘单,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吨枉,“玉大人,你說我怎么就攤上這事哄芜∶餐ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵认臊,是天一觀的道長圃庭。 經(jīng)常有香客問我,道長失晴,這世上最難降的妖魔是什么剧腻? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮涂屁,結(jié)果婚禮上书在,老公的妹妹穿的比我還像新娘。我一直安慰自己拆又,他們只是感情好蕊温,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遏乔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪发笔。 梳的紋絲不亂的頭發(fā)上盟萨,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音了讨,去河邊找鬼捻激。 笑死,一個胖子當著我的面吹牛前计,可吹牛的內(nèi)容都是我干的胞谭。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼男杈,長吁一口氣:“原來是場噩夢啊……” “哼丈屹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伶棒,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤旺垒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后肤无,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體先蒋,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年宛渐,在試婚紗的時候發(fā)現(xiàn)自己被綠了竞漾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眯搭。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖业岁,靈堂內(nèi)的尸體忽然破棺而出鳞仙,到底是詐尸還是另有隱情,我是刑警寧澤叨襟,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布繁扎,位于F島的核電站,受9級特大地震影響糊闽,放射性物質(zhì)發(fā)生泄漏梳玫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一右犹、第九天 我趴在偏房一處隱蔽的房頂上張望提澎。 院中可真熱鬧,春花似錦念链、人聲如沸盼忌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谦纱。三九已至,卻和暖如春君编,著一層夾襖步出監(jiān)牢的瞬間跨嘉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工吃嘿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祠乃,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓兑燥,卻偏偏與公主長得像亮瓷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子降瞳,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一 運行時權(quán)限 Android6.0 引入了一個新的應(yīng)用權(quán)限模型嘱支,期望對用戶更容易理解,更易用和更安全挣饥。該模型將標...
    奧利奧龍卷風閱讀 500評論 1 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,754評論 25 707
  • 到底什么叫“開會”亮靴?開員工大會馍盟,叫開會嗎?一群人頭腦風暴叫開會嗎茧吊?向領(lǐng)導匯報工作贞岭,叫開會嗎八毯?銷售團隊每天早上的晨會...
    劉遠鑫閱讀 1,639評論 0 5
  • 不想說就什么都不要說 何必在意與自己不相關(guān)的人 ex
    車車車66閱讀 223評論 0 0
  • 突如其來的癡迷,來的快去的也快瞄桨。 穗穗接觸的東西也不少话速,但是都不精,一來是只是簡簡單單的了解芯侥,沒有認真的去認識泊交,二...
    穗芒Ashenbert閱讀 331評論 0 0