安卓系統退出了怎麼還在後台
1. 安卓系統手機為什麼經常會有已經關閉的程序仍然在運行
這是安卓的運行機制決定的
其實你不用那麼在意android手機剩餘內存的大小。很多人都是把使用其他系統的習慣帶到了android手機上,不是所有的智能手機系統都一樣
的。android大多數應用沒有退出的設計其實是有道理的,這和系統對進程的調度機制有關系。如果你知道java,就能更清楚這機制了。其實和java
的垃圾回收機制類似,系統有一個規則來回收內存。進行內存調度有個閥值,只有低於這個值系統才會按一個列表來關閉用戶不需要的東西。當然這個值默認設置得
很小,所以你會看到內存老在很少的數值徘徊。但事實上他並不影響速度。相反加快了下次啟動應用的速度。這本來也是android的優勢之一,如果人為去關
閉進程,沒有太大必要。特別是自動關進程的軟體。
android的應用在被切換到後台時,它其實已經被暫停了,並不會消耗cpu資源,只保留了運行狀態。所以為什麼有的程序切出去重新進入,還會
到主界面。但是,一個程序如果想要在後台處理些東西,如音樂播放,它就會開啟一個服務,服務可在後台持續運行,所以在後台耗電的也只有帶服務的應用了。這
個在進程管理軟體里能看到,名字是service。所以沒有帶服務的應用在後台是完全不耗電的,沒有必要關閉。這種設計本來就是一個非常好的設計,下次啟
動程序時,會更快,因為不需要讀取界面資源,何必要關掉他們抹殺這個android的優點呢?
還有一點,為什麼android應用看起來那麼
耗內存?大家知道,android上的應用是java,當然需要虛擬機,而android上的應用是帶有獨立虛擬機的,也就是每開一個應用就會打開一個獨
立的虛擬機。這樣設計的原因是可以避免虛擬機崩潰導致整個系統崩潰,但代價就是需要更多內存。
所以 你會看到一些已經關閉甚至已經清除了的程序 會又出現在運行列表了 這很正常啦 不要停留在Windows上的思想方式來看你的安卓啊
2. 安卓手機怎麼退出應用後,讓程序不後台運行
以小米5手機為例
操作步驟
1、開始,先在手機的桌面上找到應用程序「設置」圖標,點擊進入新的操作界面。
3. 為什麼大多數安卓軟體退出後仍在後台使用服務
因為這是系統問題,您可以清理後台或者強行停止應用。望採納
4. 安卓的系統怎麼很多軟體退出了還在後台運行啊
Android採取了一種有別於Linux的進程管理策略,有別於Linux的在進程活動停止後就結束該進程,Android把這些進程都保留在內存中,直到系統需要更多內存為止。這些保留在內存中的進程通常情況下不會影響整體系統的運行速度,並且當用戶再次激活這些進程時,提升了進程的啟動速度。
那Android什麼時候結束進程?結束哪個進程呢?之前普遍的認識是Android是依據一個名為LRU(last recently used 最近使用過的程序)列表,將程序進行排序,並結束最早的進程。XDA的樓主又進一步對這個管理機制進行研究,有了如下發現:
1.系統會對進程的重要性進行評估,並將重要性以「oom_adj」這個數值表示出來,賦予各個進程;(系統會根據「oom_adj」來判斷需要結束哪些進程,一般來說,「oom_adj」的值越大,該進程被系統選中終止的可能就越高)
2.前台程序的「oom_adj」值為0,這意味著它不會被系統終止,一旦它不可訪問後,會獲得個更高的「oom_adj」,作者推測「oom_adj」的值是根據軟體在LRU列表中的位置所決定的;
3.Android不同於Linux,有一套自己獨特的進程管理模塊,這個模塊有更強的可定製性,可根據「oom_adj」值的范圍來決定進程管理策略,比如可以設定「當內存小於X時,結束「oom_adj」大於Y的進程」。這給了進程管理腳本的編寫以更多的選擇。
4.Android將進程分為六大類:
1.前台進程(foreground):目前正在屏幕上顯示的進程和一些系統進程。舉例來說,Dialer Storage,Google Search等系統進程就是前台進程;再舉例來說,當你運行一個程序,如瀏覽器,當瀏覽器界面在前台顯示時,瀏覽器屬於前台進程(foreground),但一旦你按home回到主界面,瀏覽器就變成了後台程序(background)。我們最不希望終止的進程就是前台進程。
2.可見進程(visible):可見進程是一些不再前台,但用戶依然可見的進程,舉個例來說:widget、輸入法等,都屬於visible。這部分進程雖然不在前台,但與我們的使用也密切相關,我們也不希望它們被終止(你肯定不希望時鍾、天氣,新聞等widget被終止,那它們將無法同步,你也不希望輸入法被終止,否則你每次輸入時都需要重新啟動輸入法)
3.次要服務(secondary server):目前正在運行的一些服務(主要服務,如撥號等,是不可能被進程管理終止的,故這里只談次要服務),舉例來說:谷歌企業套件,Gmail內部存儲,聯系人內部存儲等。這部分服務雖然屬於次要服務,但很一些系統功能依然息息相關,我們時常需要用到它們,所以也太希望他們被終止
4.後台進程(hidden):雖然作者用了hidden這個詞,但實際即是後台進程(background),就是我們通常意義上理解的啟動後被切換到後台的進程,如瀏覽器,閱讀器等。當程序顯示在屏幕上時,他所運行的進程即為前台進程(foreground),一旦我們按home返回主界面(注意是按home,不是按back),程序就駐留在後台,成為後台進程
(background)。後台進程的管理策略有多種:有較為積極的方式,一旦程序到達後台立即終止,這種方式會提高程序的運行速度,但無法加速程序的再次啟動;也有較消極的方式,盡可能多的保留後台程序,雖然可能會影響到單個程序的運行速度,但在再次啟動已啟動的程序時,速度會有所提升。這里就需要用戶根據自己的使用習慣找到一個平衡點
5.內容供應節點(content provider):沒有程序實體,進提供內容供別的程序去用的,比如日歷供應節點,郵件供應節點等。在終止進程時,這類程序應該有較高的優先權
6.空進程(empty):沒有任何東西在內運行的進程,有些程序,比如BTE,在程序退出後,依然會在進程中駐留一個空進程,這個進程里沒有任何數據在運行,作用往往是提高該程序下次的啟動速度或者記錄程序的一些歷史信息。這部分進程無疑是應該最先終止的。
為什麼我剛刷完rom,殺下進程運行內存有65MB,以後就越來越少了呢?
為什麼阿里旺旺、QQ等程序掛到後台運行再重新回到前台後就掉線呢?
為什麼每次打開進程管理器,可用內存總是在24MB左右呢?
以前用E63,運行一個程序,按下小房子鍵(home)就可以把這個程序調到後台運行,如果想要調回前台的話,只需再長按小房子鍵,就會出現一個程序列表,選擇相應的程序,那個程序就會回到前台。買來G1後,上面也有一個home鍵,按下這個home鍵也能回到桌面。但是,如果想把程序調回前台,像E63那樣操作,就會發現有的程序會重新打開一次,也就是QQ會掉線。還有以前明明選擇了退出的程序,也會出現長按home鍵的名單中。
先來看下android的內存管理方式吧:(沒耐心的直接看紅字部分)
======================以下內容為轉帖=======================
理論
Android採取了一種有別於Linux的進程管理策略,有別於Linux的在進程活動停止後就結束該進程,Android把這些進程都保留在內存中,直到系統需要更多內存為止。這些保留在內存中的進程通常情況下不會影響整體系統的運行速度,並且當用戶再次激活這些進程時,提升了進程的啟動速度。
那Android什麼時候結束進程?結束哪個進程呢?之前普遍的認識是Android是依據一個名為LRU(last recently used 最近使用過的程序)列表,將程序進行排序,並結束最早的進程。XDA的樓主又進一步對這個管理機制進行研究,有了如下發現:
1.系統會對進程的重要性進行評估,並將重要性以「oom_adj」這個數值表示出來,賦予各個進程;(系統會根據「oom_adj」來判斷需要結束哪些進程,一般來說,「oom_adj」的值越大,該進程被系統選中終止的可能就越高)
2.前台程序的「oom_adj」值為0,這意味著它不會被系統終止,一旦它不可訪問後,會獲得個更高的「oom_adj」,作者推測「oom_adj」的值是根據軟體在LRU列表中的位置所決定的;
3.Android不同於Linux,有一套自己獨特的進程管理模塊,這個模塊有更強的可定製性,可根據「oom_adj」值的范圍來決定進程管理策略,比如可以設定「當內存小於X時,結束「oom_adj」大於Y的進程」。這給了進程管理腳本的編寫以更多的選擇。
4.Android將進程分為六大類:
1.前台進程(foreground):目前正在屏幕上顯示的進程和一些系統進程。舉例來說,Dialer Storage,Google Search等系統進程就是前台進程;再舉例來說,當你運行一個程序,如瀏覽器,當瀏覽器界面在前台顯示時,瀏覽器屬於前台進程(foreground),但一旦你按home回到主界面,瀏覽器就變成了後台程序(background)。我們最不希望終止的進程就是前台進程。
2.可見進程(visible):可見進程是一些不再前台,但用戶依然可見的進程,舉個例來說:widget、輸入法等,都屬於visible。這部分進程雖然不在前台,但與我們的使用也密切相關,我們也不希望它們被終止(你肯定不希望時鍾、天氣,新聞等widget被終止,那它們將無法同步,你也不希望輸入法被終止,否則你每次輸入時都需要重新啟動輸入法)
3.次要服務(secondary server):目前正在運行的一些服務(主要服務,如撥號等,是不可能被進程管理終止的,故這里只談次要服務),舉例來說:谷歌企業套件,Gmail內部存儲,聯系人內部存儲等。這部分服務雖然屬於次要服務,但很一些系統功能依然息息相關,我們時常需要用到它們,所以也太希望他們被終止
4.後台進程(hidden):雖然作者用了hidden這個詞,但實際即是後台進程(background),就是我們通常意義上理解的啟動後被切換到後台的進程,如瀏覽器,閱讀器等。當程序顯示在屏幕上時,他所運行的進程即為前台進程(foreground),一旦我們按home返回主界面(注意是按home,不是按back),程序就駐留在後台,成為後台進程
(background)。後台進程的管理策略有多種:有較為積極的方式,一旦程序到達後台立即終止,這種方式會提高程序的運行速度,但無法加速程序的再次啟動;也有較消極的方式,盡可能多的保留後台程序,雖然可能會影響到單個程序的運行速度,但在再次啟動已啟動的程序時,速度會有所提升。這里就需要用戶根據自己的使用習慣找到一個平衡點
5.內容供應節點(content provider):沒有程序實體,進提供內容供別的程序去用的,比如日歷供應節點,郵件供應節點等。在終止進程時,這類程序應該有較高的優先權
6.空進程(empty):沒有任何東西在內運行的進程,有些程序,比如BTE,在程序退出後,依然會在進程中駐留一個空進程,這個進程里沒有任何數據在運行,作用往往是提高該程序下次的啟動速度或者記錄程序的一些歷史信息。這部分進程無疑是應該最先終止的。
==========================轉帖完畢=============
簡單來說,就是選擇退出程序時,並不是完全退出程序,該程序仍然會在後台駐留一個進程,以便下次更快的打開。那什麼時候完全關閉該程序呢?這取決於該程序的類型(就是上面講的那幾個類型)。系統會給每個類型的程序一個內存值閾(閥門),也就是說當運行內存低於某個值時,系統會自動按照打開的先後順序來關閉該類型的程序。例如,當運存小於24MB時,系統才會自動關閉空進程這一類型的程序。但是當運存到24MB時,後台運行QQ就會掉線。想要讓QQ不掉線,就必須讓運存在還剩24MB之前把不用的空進程關掉。
既然已經知道了android系統的內存管理原理,那麼怎樣讓它按照我們的意願自動關閉我們想關閉的程序,而不是一遍一遍的全殺任務呢?
下面推薦一個小軟體:自動內存管理
這款軟體,簡單的說,就是管理每個類型程序的值閾的。再拿上面QQ的例子來說,我們可以把空進程的值閾調高點,也就是當運存小於45MB時,關閉空進程。這樣,就可以最大限度的節省內存空間。
軟體的操作方式很簡單,就是拖動滑塊來調節程序的值閾。如圖:
注意滑塊表示的內存數量並不是該類型程序能用的運存,而是當運存低於該值時,選擇關閉著類型的程序。
用自動內存管理的好處: 自動結束你想結束的進程,不用頻繁殺進程。一個任務管理器運行時,佔用大量運存,我用了兩個都是10MB左右,而這個才2.7MB。節省大量運存。
5. 安卓手機關閉後台應用方法 如何徹底退出後台應用
若使用的是vivo手機,可以從屏幕底部中間往上滑後停頓調出後台應用(部分機型需點擊左鍵),按住軟體圖標上滑,即可關閉後台運行的應用。
6. 安卓系統怎麼退出程序後,仍有後台運行
系統啟動器相關軟體關不掉的,也就是保證系統正常運行的軟體,安卓機都這樣