1. android 7.0有哪些優點
Android 7.0的有以下優點(來源:網路-Android 7.0):
分屏多工。進入後台多工管理頁面,然後按住其中一個卡片,然後向上拖動至頂部即可開啟分屏多工,支援上下分欄和左右分欄,允許拖動中間的分割線調整兩個APP所佔的比例。
全新下拉快捷開關頁。在安卓7.0中,下拉開啟通知欄頂部即可顯示5個使用者常用的快捷開手薯嘩關,支援單擊開關以及長按進入對應設定。如果繼續下拉通知欄即可顯示全部快捷開關,此外在快捷開關頁右下角也會顯示一個「編輯」按鈕,點選之後即可自定義新增/刪除快捷開關,或拖動進行排序。
通知訊息快捷回復。安卓7.0加入了全新的API,支援第三方應用通知的快捷操作和回復,例如來電會以橫幅方式在螢幕頂部出現,提供接聽/結束通話兩個按鈕;資訊/社交類應用通知,還可以直接開啟鍵盤,在輸入欄里進行快捷回復。
通知訊息歸攏。安卓7.0會將同一應用的多條通知提示訊息歸攏為一項,點選該項即可展開此前的全部通知,允許使用者對每個通知執行單獨操作。
夜間模式。安卓7.0中重新加入了夜間深色主題模式,該功能依然需要在系統調諧器中開啟,從頂部下劃開啟快捷設定頁,然後長按其中的設定圖示,齒輪旋轉10秒鍾左右即可提示已開啟系統調諧器,之後使用者在設定中即可找到「系統調諧器」設定項。點開其中的「色彩和外觀」,即可找到夜間模式,開啟後即可使用全域性的深色主題模式,同時亮度和色彩也會進行一定的調整,該功能可以基於時間或地理位置自動開啟。另外,系統調諧器中也提供了RGB紅綠藍三色調節滑動條,允許使用者手動精細調節,例如減少藍色或增加紅色以提供類似護眼模式的效果。
流量保護模式。安卓7.0新增的流量保護模式不僅可以禁止應用在後台使用流量,還會進一步減少該應用在前台時的流量使用。其具體實現原理目前尚不清楚,推測其有可能使用了類似Chrome瀏覽器的資料壓縮技術。此外,谷歌還擴充套件了ConnectivityManager API的能力,使得應用可以檢測系統是否開啟了流量保護模式,或者檢測自己是否在白名單中。安卓7.0允許使用者單獨針對每個應用,選擇是否開啟資料保護模式。
全畢行新設定樣式。安卓7.0啟用了全新的設定樣式,首先每個分類下各個子項之間的分割線消失了,只保留分類之間的分割線。全新的設定選單還提供了一個綠色的頂欄,允許使用者通過後方的下拉箭頭,快速設定勿擾模式等。除了勿擾模式外,頂欄選單還可以顯示諸多其他的設定狀態,例如資料流量的使用情況,自動亮度是否開啟等。谷歌也在安卓7.0的設定中加入了漢堡選單,在二級設定介面中的左上角,你就會看到這個漢堡選單,點選後即可看到所有設定項,方便使用者快速跳轉。
改進的Doze休眠機制。谷歌在安卓7.0中對Doze休眠機製做了進一步的優化,在此前的安卓6.0中,Doze深度休眠機制對於改善安卓的續航提供了巨大的作用。而在安卓7.0中,谷歌對Doze進行了更多的優化,休眠機制的使用規則和場景有所擴充套件,例如只要手動在後台刪掉應用卡片,關屏後該應用就會被很快深度休眠。
系統級電話黑名單功能。安卓7.0將電話攔截功能變成了一個系統級功能。其它應用可以呼叫這個攔截名單,但只有個別應用可以寫入,包括撥號應用、預設的簡訊應用等。被攔截號碼將不會出現在來電記錄中,也不會出現通知。另外使用者也可以通過賬戶體系備份和恢復這個攔截名單,以便快速匯入其它裝置或賬號。
選單鍵快速應用切換。雙擊選單鍵,就能自動切換到上一個應用。此外,如果你不停地點選選單鍵的話,就會在所有應用中不間斷地輪換,應用視窗會自動放大,頂部還會出現倒計時條,停止點選且倒計時結束後,當前應用會自動放大並返回到前台。
無縫更新。由於現有安卓系統,更新過程非常繁瑣(下載、安裝、重新啟動等),谷歌在Android7.0中引入手枯了無縫更新功能。當手機在無線網連線的情況下,更新就會在後台中悄悄地下載,然後在你手機下一次重啟的時候自動升級。
更高的效能。Android7.0建立了先進的圖形處理Vulkan系統,能少的減少對CPU的佔用。與此同時,Android7.0加入了JIT編譯器,安裝程式快了75%,所佔空間減少了50%。
更高的安全性。Android7.0加入了全新安全效能,其中包括基於檔案的資料加密。
提升了系統的效率。Android7.0可以自動關閉使用者較長時間未使用的應用程式。在通知上新增了直接回復功能,並支援一鍵全部清除功能。
在安卓7.0中,谷歌將電話攔截功能變成了一個系統級功能。其它應用可以呼叫這個攔截名單,但只有個別應用可以寫入,包括撥號應用、預設的簡訊應用等。被攔截號碼將不會出現在來電記錄中,也不會出現通知。另外使用者也可以通過賬戶體系備份和恢復這個攔截名單,以便快速匯入其它裝置或賬號
全新下拉快捷開關頁。
通知訊息快捷回復。
通知訊息歸攏。
夜間模式。
流量保護模式。
全新設定樣式。
改進的Doze休眠機制。
系統級電話黑名單功能。
選單鍵快速應用切換。
無縫更新。
更高的效能。
更高的安全性。
提升了系統的效率。
Android 7.0的優點介紹:
優點一:可以徹底刪除原生應用
眾所周知,蘋果iOS10允許使用者「刪除」部分手機自帶應用,而舊版的安卓系統早已支援該功能,不過iOS10實際上是隱藏部分原生應用而不是刪除,安卓則需要使用者ROOT來獲取許可權,從而刪除幾乎所有的自帶應用,這一點安卓系統支援在先,蘋果在iOS10算是跟上腳步,不過也更顯雞肋。
優點二:無縫更新
理論上來講,獲得軟體更新是一件好事情,但是對於安卓使用者來說,更新過程非常繁瑣——下載、安裝、重新啟動等,是一件麻煩的事情。為了改善使用者體驗,谷歌在Android7.0中引入了無縫更新功能。這樣一來,更新就會在後台中悄悄地下載,然後在你手機下一次重啟的時候自動升級。當然,這個更新會在無線網連線的情況下進行。
優點三:真正的多視窗多工處理
就多工處理方面而言,Android作業系統的表現一直不錯,但是Android7.0將往前走一大步。支援快速切換功能,它允許使用者雙擊「最近」按鈕去快速切換到自己上一次使用的應用程式中。同時,「最近」選單中還有一個「清除全部」按鈕。
另外,你只要在一個應用程式中點選「最近」按鈕,你將能夠選擇在分屏檢視中開啟另外一個應用程式。在大螢幕裝置中,同時開啟兩個應用程式視窗顯然可以提升執行效率,你可以一邊看新聞一邊發簡訊給自己的朋友。
優點四:捆綁通知
與按照時間順序顯示通知不同,Android7.0支援將來自同一應用程式的通知捆綁在一起,例如訊息應用的通知。當用戶每天起來面對龐大的通知的時候,這種將一組相關通知捆綁在一起的做法,無疑是移動技術的饋贈。對於那些通知的重度使用者來講,這些改變無疑是非常實用的。
優點五:新增省流量模式
省電模式大家都知道,那麼你聽過省流量模式嗎?Android7.0中引入「省流量」模式,在接近使用者計費周期末,或是流量包本身較小的情況下,減少應用消耗的資料流量。在啟用這一模式時,系統將攔截後台的資料使用,並在可能的情況下減少前台執行應用使用的資料量,例如限制你看視訊,下調畫質,以及減少快取等。當然你也可以對個別應用不進行限制,痛快使用。
優點六:新增VR支援
Android7.0將會是谷歌充分執行其VR計劃的作業系統,它內建谷歌的全新VR平台Daydream。Daydream是一個虛擬現實平台,由Daydream頭盔、手柄和智慧手機構成,支援Daydream的智慧手機需滿足一定的硬體要求。目前,我們所知的就是智慧手機的感測器、螢幕和系統晶片需要達到一定標准,滿足了標准使用將會很暢快。
總結:
以上就是Android7.0的六大優點,但別的功能上兩者卻是越來越像,例如省電模式等。蘋果iOS10與Android7.0附著在各自的手機裝置之上,開源與閉源系統的底蘊可不是區區一文千字或是幾個相似之處所能涵蓋,相信等蘋果iOS10與Android7.0正式版出來之後又會有一場爭斗,那麼到底誰更好呢?等今年秋季為大家揭曉。
據卓躍教育Android作業系統的吸引力主要源於其在市場份額上的強大「競爭力」。2011年採用Android系統的手機數量將超越蘋果的iPhone數量。Android作業系統的快速成長,國內手機廠商不可能視而不見,更不可能不及時跟進而痛失機會。
掌握航行方向
帆我就不知道了
能幫一點是一點了
希望能造一艘好船 提前恭喜
1、分屏多工
其實這個功能,之前不少廠商已經做了,而谷歌終於讓7.0原生支援了它,從實際體驗來看,戶點選多工按鍵後,長按其中一個應用,將其拖拽到螢幕頂部或底部,然後再點選另外一個應用就可以實現分屏多工功能。
2、Data Saver
什麼是Data Saver?簡單來說就是減少App在後台流量偷跑,使用者可以設定黑名單,當Data Saver開啟後,這些黑名單中的App將會受到流量限制措施,同時谷歌也減少一些影象傳輸的解析度,限制移動流媒體服務的位元速率,限制一些軟體的預快取功能(自動讀取使用者並未請求的資料)。
3、號碼攔截
谷歌還在新系統中加入了號碼攔截功能,使用者可以更好攔截詐騙分子、營銷電話以及其他騷擾電話,而被封殺的電話號碼,將無法來電或者傳送簡訊。
4、更便捷的通知中心
谷歌讓Android 7.0系統的通知中心變的便捷且更強大,為了讓使用者節省更多的時間,首先下拉通知欄中最上方加入了快捷按鍵控制開關,同時通知中心能顯示更多的資訊,其次使用者可以在通知中心內快速回復訊息(免去再開啟相應應用的繁瑣步驟了),最後就是訊息的歸攏(就是同一個應用的通知變成「通知組」),如當你收到4封郵件,通知中會一一為你展現,你可以挨個或者分批處理(也可以類比QQ訊息),很是方便。
5、夜間模式
准確來說,這並不是一個新功能,6.0預覽版中有,但正式版谷歌給剔除了,現在它又回來了。跟之前不太一樣的是,這次的夜間模式被放在了系統UI設定中,開啟後系統會根據環境自動開啟。
6、增強的Java 8語言支援
主要提升開發者擴充套件,這個對於普通使用者可能感受不到,但對於開發人員來說,還是很有用的。
7、畫中畫模式
這個畫中畫的展現方式跟iOS 9上的基本一致,不過安卓的這個主要是針對電視平台的,當然如果使用者不喜歡螢幕平分顯示的話,可以將其中一個視窗調整到設定的最小值。
一、可隨身攜帶
因為傳統的快遞掃描器的面積是比較大的,並且使用起來也不如Android掃描槍方便,因此,工作人員是很難把傳統的掃描器帶在身上,而Android掃描槍採用的全新的技術,不僅能夠當手機使用,而且個頭也是比較的小巧,因此工作人員就能方便的把它放在口袋裡。在掃描快遞時,也只需要把Android掃描槍從口袋裡拿出來即可,對工作產生了極大的方便,因此,Android掃描槍的口碑也非常好。
二、操作更加的快捷
Android掃描槍與傳統的掃描槍相比,在操作的方法上有著更大的簡便,因此在掃描物流資訊時,訂單號以及訂單所有的資訊都被錄入了,並且也能使用Android掃描槍進行操控訂單,所以說Android掃描槍的操作更加的快捷。
三、系統非常穩定出錯率極低
Android掃描槍內建有高畫素的掃描攝像機,因此能夠快速且准確的識別出快遞單上的條形碼,並且它能夠掃描的范圍也更加的廣泛。所以這在一定程度上也增加了它的穩定性,因而也就能夠有效的降低出錯率。
由此可知,Android掃描槍在使用的時候能夠表現出,可隨身攜帶操作更加快捷,系統穩定且錄入的出錯率極低等優點。除此之外,Android掃描槍在外觀上也有所的改良,拿在手上具有很強烈的時尚感,遠遠的看起來還像是一部手機,因此,也大大的滿足了使用者的對Android掃描槍的外觀要求。
1、預設狀態下可防範具有潛在危險的Active X控制元件預設狀態下,經過檢查後被確認為不安全的Active X控制元件再也不能自動執行。相反,它們被Active X選擇加入(opt-in)功能自動禁用。
2、可以控制每個區域的Active X選擇加入功能
使用者可以對每個區域逐一禁用Active X選擇加入功能。預設狀態下,選擇加入功能在「網際網路」和「受限網站」區域上是啟用的;
而在「內聯網」和「可信網站」區域上是禁用的。
3、Active X控制元件的鎖定
開發人員現在可以限制控制元件只在某個網站上執行(網站鎖定),或者只在指定安全區域內執行(區域鎖定),從而提高Active X控制元件的安全性。
4、防範網路釣魚
IE 7引入了網路釣魚過濾器(Phishing Filter),這有助於保護使用者避免上當受騙、輸入個人資訊或者口令,從而防止身份竊賊收集及利用這些資訊。網路釣魚過濾器可以自動將使用者訪問的網站與已知網路釣魚站點列表進行對照; 如果該網站已被確認為網路釣魚站點,它會發出警告。如果使用者不想對網站自動檢查,也可以選擇性地檢查可疑的特定網站。
5、跨域安全
新IE 7的一種安全機制可以預防名為跨域指令碼(cross-domain scripting)的一種攻擊手法,該機制可以迫使指令碼在原來的安全環境下執行,即使它們被轉到不同的安全域也是如此。
2. android進程管理機制
Android系統與其他操作系統有個很不一樣的地方,就是其他操作系統盡可能移除不再活動的進程,從而盡可能保證多的內存空間,而Android系統卻是反其道而行之,盡可能保留進程。Android這樣設計有什麼優勢呢?又是通過怎樣的方法來管理這些被保留的進程的呢?Android用戶又該如何正確使用手機從而更好發揮Android系統所特有的優勢呢?本文將一一為您解開這些謎團。
本文的主要內容如下:
一、Android進程管理的特殊設計
Linux系統對進程的管理方式是一旦進程活動停止,系統就會結束該進程。盡管Android基於Linux Kernel,但在進程管理上,卻採取了另外一種獨特的設計:當進程活動停止時,系統並不會立刻結束它,而是會盡可能地將該進程保存在內存中,在以後的某個時間,一旦需要該進程,系統就會立即打開它,而不用再做一些初始化操作。只有當剩餘內存不夠用了,為了維持新開啟的進程或者比較重要的進程的正常運行,系統才會選擇性地殺掉一些不重要的內存,騰出內存空間來,所以Android系統永遠不會有內存不足的提示。
二、Android獨特進程管理設計的好處
Android這種獨特的設計,也正是Android標榜的優勢之一,這有兩個好處:
1、最大限度地提高內存的使用率。
比如,你的內存是8G,如果每次使用完某個進程就殺掉,那麼被使用的內存基本上會始終保持在某個值,比如4G以內,那麼內存的使用率就總是保存在50%以內,剩餘的4G內存形同虛設,發揮用處的機會非常少。而Android的這種設計,就可以做到有多少內存就用多少內存,盡可能大地提高內存使用率。同樣比如有8G內存,使用完的進程仍保留在內存中,累積下來,被使用的內存就盡可能地會接近8G。
2、提高再次啟動時的啟動速度
被駐留在內存中不再活動的進程(後台進程或空進程,後面會再講到),很多是經常需要使用的,當再次使用該進程的時候,系統立即打開它,而不需要再重新初始化。例如,我們常用的瀏覽器,當暫時不再使用時,按下Home鍵或Back鍵,瀏覽器進程就變成了不再活動的進程。如果下次又要使用了,點擊多任務鍵,在最近使用應用列表中點擊瀏覽器即可,瀏覽器界面仍然保持著退出前的界面。但如果退出時把該進程移除了,那麼再次使用時,就需要重新初始化,然後進入該應用,這往往會花費不少的時間。
三、Android進程的五個等級
Android系統將盡量長時間地保持應用進程,但為了新建進程或運行更重要的進程,最終需要移除舊進程來回收內存。為了確定保留或終止哪些進程,系統會根據進程中正在運行的組件以及這些組件的狀態,將每個進程放入「重要性層次結構」中。必要時,系統會首先消除重要性最低的進程,然後是重要性略遜的進程,以此類推,以回收系統資源。該「重要性層級結構」將進程分為了五個等級:
1、前台進程(foreground)
前台進程是指那些有組件正和用戶進行交互的應用程序的進程,也稱為Active進程。這些都是Android嘗試通過回收其他應用程序來使其保持相應的進程。這些進程的數量非常少,只有等到最後關頭才會終止這些進程,是用戶最不希望終止的進程。例如:而當你運行瀏覽器這類應用時,它們的界面就會顯示在前台,它們就屬於前台進程,當你按home鍵回到主界面,他們就變成了後台程序。
如果一個進程滿足以下任一條件,即視為前台進程:
(1)託管處於活動狀態的Activity,也就是說,它們位於前台並對用戶事件進行響應,此時的情形為響應了Activity中的onResume()生命周期方法,但沒有響應onPause()。
(2)託管正在執行onReceive()方法處理事件程序的BroadcastReceiver。
(3)託管正在執行onStart()、onCreate()或onDestroy()事件處理程序的Service。
(4)託管正在運行且被標記為在前台運行的Service,即調用了該Service的startForeground()方法。
(5)託管某個Service,且該Service正綁定在用戶正在交互的Activity的Service,即該Activity正處於活動狀態。
2、可見進程(visible)
沒有任何前台組件、但仍然會影響用戶在屏幕上所見內容的進程。如果一個進程滿足以下任一條件,即視為可見進程:
(1)託管不在前台、但仍對用戶可見的Activity(已調用其onPause()方法)。例如:如果前台Acitivty啟動了一個對話框,或者啟動了一個非全屏,亦或是一個透明的Activity,允許在其後顯示上一個Activity,則可能會發生這種情況,這類Activity不在前台運行,也不能對用戶事件作出反應。
(2)託管綁定到可見Activity的Service。(官網上說是綁定到可見或前台Activity,但筆者有一點疑問,這個和「前台進程」中第(5)點相矛盾嗎,綁定到前台Activity,那就是前台進程了)
可見進程被視為是極其重要的進程,這類進程的數量也很少,只有在資源極度匱乏的環境下,為保證前台進程繼續執行時才會終止。
3、服務進程(Service)
正在運行已使用startService()方法啟動的Serice且不屬於上述兩個更高類別進程的進程。盡管服務進程與用戶所見內容沒有直接關聯,但是它們通常在執行一些用戶關心的操作。因此,除非內存不足以維持所有前台進程和可見進程同時運行,否則系統會讓服務進程保持運行狀態。
有些資料上面也稱這種進程為次要服務(Secondary Service),而屬於上述兩個更高類別的進程則被稱為主要服務,主要服務往往屬於系統進程,如撥號進程等,不可能被進程管理輕易終止。這里我們以Android開發者官網的稱呼為標准,稱為服務進程。
4、後台進程(hidden)
包含目前對用戶不可見的Activity,即該Activity調用了onStop()方法。這些進程對用戶體驗沒有直接影響,系統可能隨時終止它們,以回收內存供上述三個更高級別的進程使用。通常會有很多後台進程在運行,它們會保存在LRU(Least Recently Used,最近最少使用)列表中,以確保包含用戶最近查看的Activity的進程最後一個被終止。如果某個Activity正確實現了生命周期方法,並保存了其當前狀態,則終止其進程不會對用戶體驗產生明顯影響,因為當用戶導航回該Activity時,Activity會恢復其所有可見狀態。
這里讀者可以做個試驗,先開啟微信,進入到朋友圈界面, 然後點擊手機屏幕下方的導航欄中的Home按鍵進入到後台,再點擊最近使用應用列表顯示按鈕(不同的手機位置不一樣,有的在Home鍵左邊,有的則在Home鍵右邊),在顯示的最近使用應用的列表中清理掉微信應用,最後再點擊桌面的微信圖標啟動微信,會發現顯示的界面仍然是朋友圈界面。
後台進程,我們可以簡單理解為,應用(只考慮只有Activity組件的情況)啟動後按Home鍵後被切換到後台的進程。如瀏覽器、閱讀器等,當程序顯示在屏幕上時,它們所運行的進程即為前台進程(foreground),一旦按home鍵(注意不是back鍵)返回到桌面,程序就停留在後台,成為後台進程。
5、空進程(empty)
不含任何活動應用組件的進程。保留這種進程的唯一目的是用作緩存,以縮短下次再其中運行組件所需要的啟動時間。一般來說,當應用按back按鍵退出後應用後,就變成了一個空進程。比如BTE,在程序退出後,依然會在進程中駐留一個空進程,這個進程里沒有任何數據在運行,作用往往是提高該程序下次的啟動速度或者記錄程序的一些歷史信息。當系統內存不夠用時,無疑,該進程是應該最先終止的。在最近使用應用列表中,可以看到按back鍵退出的應用。
根據進程中當前活動組件的重要程度,Android會將進程評定為它可能達到的最高級別。通俗地說,就是如果一個進程同時擁有多個對應上述不同等級進程的組件時,會以最高的那個等級作為該進程的等級。例如,如果某進程託管著服務和可見Activity,則會將此進程評定為可見進程,而不是服務進程。
此外,一個進程的級別可能會因為其他進程對它的依賴而有所提高,即服務於另一進程的進程其級別永遠不會低於其所服務的進程。例如,如果進程A中的內容提供程序為進程B中的客戶端提供服務,或者如果進程A中的服務綁定到進程B中的組件,則進程A始終被視為至少與進程B同樣重要。
由於運行服務的進程其級別高於託管後台Activity的進程,因此啟動長時間運行操作的Activity最好為該操作啟動Service,而不是簡單地創建工作線程,當操作有可能比Activity更加持久時更應該如此。例如,正在將圖片上傳到網站的Activity應該啟動服務來執行上傳,這樣一來,即使用戶退出Activity,仍可在後台繼續執行上傳操作。使用服務可以保證,無論Activity發生什麼情況,該操作至少具備「服務進程」優先順序。如果某個Activity開啟了線程執行耗時操作,當Activity退出時,該Activity的實例將不會釋放內存資源,直到線程執行完,這樣容易導致內存泄漏。同理,廣播接收器也應該使用服務,而不是簡單地將耗時冗長的操作放入線程中。
四、進程移除順序的依據——閾(yu,第四聲)值
前面講到,內存不夠用時,會根據進程的等級來決定優先回收哪類進程。那麼系統是根據什麼來判斷需要移除這些進程的時機的呢?答案是閾值。
1、查看閾值
我們可以採用如下方法查看手機中各個等級進程的閾值(需要root許可權),如第二排數據所示(其單位為頁):
以第一個數據44032為例,計算方法為:
1page=4KB=4*1024B=4096B
44032page* 4048B/page = 180355072B
180355072B/1024/1024 = 172M
即第一個等級的進程的閾值為172M。依次類推,閾值依次為:172M,190M,208M,226M,316M,415M。
有必要說明一下,在Android開發者官方文檔中,是將Android應用進程分為了5個等級,但很多資料卻是分的6個等級,在後台進程和空進程之間還有一個「內容提供節點(content provider)進程」。內容提供節點,沒有實體程序,僅提供內容供別的程序去用 ,比如日歷供應節點,郵件供應節點等,在終止進程時,這類進程有比較高的優先權。手機中應該是採用的6個等級的方式,如上六個數據,正好對應著六個等級的進程,等級越高,閾值越低,即前台進程閾值為172M,空進程為415M。當系統的剩餘內存只剩餘不到415M的時候,系統首先會回收空進程,依次類推,只有剩餘內存不到172M了,才會去回收前台進程,這樣就起到了優化保護重要進程的作用。
五、Home鍵、Back鍵和多任務鍵
Home鍵、Back鍵和多任務鍵,在手機屏幕的下方,這三個按鍵一般稱為導航欄,中間的按鈕為Home鍵,多任務鍵和Back鍵分別在其左右,一般根據手機品牌不同,左右位置也有所差異。
在運行App的時候,如果按一下Home鍵或者Back鍵,都可以退到桌面,那麼這兩者有什麼區別呢?
Home鍵。按Home鍵的時候,App如果沒有Service開啟,會從一個前台進程轉變為一個後台進程;如果有前台service運行,就仍然是前台進程,比如QQ音樂播放器等;如果是只有普通service運行,那麼就轉變為服務進程(參照前文中講的Android進程的5個級別)。
Back鍵。按Back鍵的時候,App如果沒有Service開啟,會從一個前台進程轉變為一個空進程;對於有Service運行的情況,和按Home鍵一樣。
後台進程和空進程,都是駐留在後台,處於暫停狀態,也都是除了佔用一部分內存外,不佔用其他如cpu等資源的,那麼問題來了,為什麼要設計後台進程和空進程這兩種空進程呢?它們的區別到底在哪裡呢?我們在前文講Android進程的5個等級的時候講到過,當剩餘內存不足的時候,系統會按照等級順序,優先移除不太重要進程,以收回內存供更重要的進程運行。那麼,它們的區別就是,在剩餘內存不足時,會優先移除空進程,再不足,才會移除空進程。所以,如果確實要退出某個應用一段時間內不大使用了,如果這款應用有退出按鈕,就用應用自帶的退出功能;如果沒有,則最好按系統的Back鍵,這樣可以變成空進程,當系統要回收內存時,就會優先被回收,從而釋放的所佔的資源。如果只是暫時退出去做點別的,過一會還要切換回來,或者對這款應用使用比較頻繁,那就使用Home鍵,因為相比於按Back鍵,這樣可以盡可能保住後台進程,方便下次使用的時候快速啟動。
當然,按Home鍵或Back鍵,對用戶來說,其實感覺不到差異,使用起來沒什麼兩樣,但是,對於Android開發者來說,卻有必要作為常識來了解其中的道理和差異。無論是按Home鍵還是按Back鍵,在按多任務鍵的時候,都可以看到這些進程,如下圖所示。最下面的按鍵為清理按鍵,點擊後可以清除掉這些進程,回收內存了,當然,前面也講了很多遍了,不建議這樣做。
2、修改閾值。
可以採用命令:echo "44032,48640,53248,57856,80896,106241" > /sys/mole/lowmemorykiller/parameters/minfree來修改閾值,如下所示:
重啟後,會恢復為原來的值。至於如何永久性修改該閾值,這里不深入探討,有興趣的童鞋可以自行研究,一般來說,就按照系統給定的默認值使用就可以了,沒特殊用途的話,沒必要修改。
對於這一節閾值的內容,暫時先講到這里,如果要更深入,可以自行多研究研究。筆者也沒有看到比較好的更深入的文章,所以也不好推薦,如果讀者看到比較好的,可以推薦給筆者,感激不盡。
六、開發者選項中的進程管理功能
Android手機都帶有開發者選項,隱藏了很多功能,顧名思義,這些功能主要用於輔助開發者調試程序用的。其中有一些就是關於進程管理功能的,筆者這里簡單介紹一下其中兩款,如下圖紅框部分所示:
不保留活動。用戶離開以後即銷毀每個活動(Activity),這樣做使得後台進程都被銷毀了。筆者試驗過幾款app,比如微信,瀏覽器,開啟/關閉「不保留活動」前後,按Home鍵後,再打開應用,有明顯的差別。當然,也試用了簡訊,DD打車,就沒看出起了什麼作用。讀者若是感興趣可以深入研究研究,到時候在指導指導筆者!
後台進程限制。如下圖所示,給出了後台進程個數限制的選項。
七、進程管理軟體的使用
Windows操作系統用戶往往總想著保留更多的內存,在使用Android手機的時候,喜歡經常清理後台進程或空進程,而且清理完後,心裡有一種特別爽的感覺,就像給家裡做了一次大掃除一樣,筆者最初使用Android手機的時候也是這樣的心態-_-!基於這樣的心態,一些進程清理軟體,很受普通用戶的青睞。其實這樣做卻正好抹殺了Android系統所標榜的優勢,如前文所講到的。
那麼進程管理軟體有無必要呢?當然有的,只是需要注意使用場合。當需要運行大型程序的時候,可以手動關閉掉一些進程,騰出足夠的空間供大型程序使用,這樣就可以有效避免系統調用進程調度策略而引起的卡頓,這一點,第八大點第3小節中會有說明。而且由於開發者的原因,可能是程序寫得太爛,或程序容易出錯,或做不該做的動作,或是惡意程序,對於這類程序進程,手動移除也是有好處的。
但如果是運行一些小程序,就完全沒有必要去預先殺進程了,完全可以交給系統自己管理。讀者可能會疑惑,因為小程序啟動的時候,也有可能會因為內存不足而導致需要移除部分進程的情況。筆者認為,即便是內存不足,小程序運行引起的調用進程調度策略測的次數非常少,要移除的進程也非常少,產生的影響不大。同時,我們也要意識到另外一點就是,無論是手動殺死進程還是自動殺進程,都需要cpu去執行這些任務,所以也會拖慢手機和消耗電量。所以從這一點看,頻繁殺進程,也是一個不好的習慣。
八、答疑解惑
在以前沒有專門去了解Android進程管理機制的時候,甚至是在研究的過程中,筆者心裡都經常存在很多疑惑,以下整理了其中5個,不知道讀者您是否有也類似的困惑呢?
1、這么多駐留在內存的進程,不會耗電嗎?
大多數用慣了Windows操作系統的童鞋,看到Android系統盡可能保留不在活動的進程的設計,可能第一反應就是質疑,難道這樣不會增加耗電量嗎?其實,但一個程序按home鍵變成後台進程或者按back鍵退出變成空進程後,其實已經被暫停了,只保留了運行狀態,不會消耗cpu,一個程序會耗電,是因為它需要調用cpu來運算,現在不消耗cpu了,當然就不會耗電了。當然,開了service的應用就另當別論了,比如QQ音樂播放器,當按home鍵或back鍵後,音樂仍然播放,是因為它開啟了服務,而且是一個前台服務,在後面我們會繼續講到,此時它是一個前台進程,而不是後台進程或空進程。
2、為什麼一個不太app,運行時會佔用很大的內存呢?
我們經常會碰到這樣一種現象,一個只有20M的App,運行起來的時候,卻會耗掉100M以上的內存。一方面是,程序運行時為對象分配內存,另一方面,是Android虛擬機的原因。Android中的應用啟動的時候,系統都會給它開啟一個獨立的虛擬機,這樣做的好處是可以避免虛擬機崩潰導致整個系統崩潰,代價就是耗用更多的內存。
3、為什麼內存少的時候,運行大型程序會卡頓呢?
當剩餘內存不多時,打開大型程序,系統會觸發自身的進程調度策略,去移除一些等級比較低的進程來回收內存,以供大型程序運行。而這個進程調度策略在決定哪些進程需要被移除的過程,是一個十分消耗資源的操作,特別是一個程序頻繁像系統申內存的時候,這樣就導致了系統的卡頓。
4、應用開得太多了,手機變慢,是因為內存被佔用太多嗎?
其實手機變慢的根本原因是cpu被耗用太多,而不是內存佔用太多,因為真正執行程序所要完成的任務的最終執行者是CPU,而不是內存(RAM)。在內存足夠的情況下,如果系統中佔用cpu的進程太多,那無疑cpu總有忙不過來的時候,那肯定就會變慢了。這就好比,在一條道路上駕車,道路就像內存,車的引擎就像cpu,如果車的引擎的動力不夠,或者承載的貨物太多,車都跑不快,即便是道路上一路暢通無阻,也無濟於事。所以,內存佔用多少並不重要,只要道路提供給車輛前行的空間是足夠的,手機變慢的責任,就和內存無關了。這個比喻用來解釋第三點也很恰當,道路提供的車輛前進的空間無法滿足車輛所必需的空間時,就需要交通機制花時間來調節交通,給這輛車提供足夠的空間,而在此期間,這輛車只能乖乖候著。
5、Android手機越用越慢,是什麼原因呢?
Android手機常常是越用越慢,即使是恢復出廠設置,也無法改變這個現象。手機越用越慢,主要由如下幾個原因:(1)虛擬機機制問題。這一點在上一個問題中也提到了,在Android4.4以前的系統,使用的是Dalvik虛擬機,它的設計機制有缺陷,就是越用越慢;在Android4.4系統中有切換按鈕,可以在Art虛擬機和Dalvik虛擬機之間切換;在Android4.4以後的系統就徹底拋棄了Dalvik而全面使用Art。(2)開啟了太多的服務,導致耗用太多的CPU。隨著手機開機使用時間的增長,應用使用越來越多,很多應用看似退出了,而其實後台可能開了不少的服務,而他們可能還沒有關閉。這些服務正在執行一些操作,會消耗CPU,而CPU才是手機變慢的根本原因。 而且Android app比較開放的,有很多不良應用充斥其中,可能對服務處理不當,濫用服務等,增加系統中的服務。(3)系統頻繁調用自身的進程調度演算法。這一點在前面已經說明了,這里不再贅述。(4)手機硬體的自然老化
3. KitKat鐭ュ氬皯 Android 4.4 浣跨敤鎶宸уぇ瑙f瀽
Android 4.4鍙戝竷浠ュ悗錛屽悇鎵嬫満鍘傚晢蹇欙紝澶у朵紮鍎誇篃蹇欙紝浣嗗繖鐨勭洰鐨勯兘鏄涓鏍風殑鈥斺斿崌綰с備笉鐭ラ亾澶у剁殑鐖辨満鏄鍚︽垚鍔熷湴鍚冨埌浜咾itKat錛熷彲鏄錛屽氨綆椾綘宸茬粡鎷ユ湁浜咥ndroid 4.4錛屼絾浣犵啛鎮夊畠銆佷簡瑙e畠銆佹噦寰楁庝箞浣跨敤瀹冨悧錛熶笉鐭ラ亾娌″叧緋伙紝灝忕紪浼氬湪榪欓噷灝嗛偅浜涗笉涓轟漢鐭ョ殑Android 4.4浣跨敤鎶宸х粰鎻紺哄嚭鏉ワ紝榪欐牱澶у跺氨鑳芥洿濂芥洿蹇鍦頒笂鎵婯itKat鎿嶄綔緋葷粺浜嗐
銆銆1.鐘舵佹爮涓庤櫄鎷熷艱埅鏍忕殑娓愬彉閫忔槑
銆銆涓浜汵exus璁懼囪幏寰桝ndroid 4.4鎺ㄩ佸悗錛屽彂鐜扮姸鎬佹爮涓庤櫄鎷熷艱埅鏍忎緷鏃ф槸榛戜箮涔庣殑涓鐗囷紝涓嶯exus 5鎼杞界殑4.4鐣岄潰鏈夌潃寰堝ぇ鐨勮嗚夊樊鍒銆傚叾瀹炶繖鍙鏄疓oogle鎺ㄩ佺殑瀹夊崜4.4涓婃病鏈夋惌杞芥渶鏂扮殑Google Experience Launcher錛屼篃灝辨槸Android 4.4鐨勪笓灞炴岄潰銆