當前位置:首頁 » 安卓系統 » android提高優先順序

android提高優先順序

發布時間: 2023-08-20 01:59:59

『壹』 android 中 自己寫的activity 的優先順序怎麼才能大於系統的 譬如來電 自己已經獲取號碼並寫了一個activity

Android中,Activity的級別永完都沒有來電這么高級別,因為手機最主要的功能,還是用來通話。

關於Android中的進程級別:
1、foreground process
正處於activity resume狀態
正處於bound服務交互的狀態
正處於服務在前台運行的狀態(StartForeGround()被調用)
Service生命周期正在被執行(onCreate(),onStart(),onDestroy())
BroadcastReceiver正在執行onReceive()方法
殺死foreground需要用戶響應,因為這個安全優先順序是最高的
是用戶操作所必須的,任一時間下,僅有少數進程會處於前台,僅當內存實在無法供給它們維持同時運行時才會被殺死。一般來說,在這種情況下,設備依然處於使用虛擬內存的狀態,必須要殺死一些前台進程以用戶界面保持響應。
•Android會依據進程中當前活躍組件的重要程度來盡可能高的估量一個進程的級別。比如說,如果一個進程中同時有一個服務和一個可視的activity,則進程會被判定為可視進程,而不是服務進程。

2、visible process
activity不在前端顯示,但也沒有完全隱藏,能夠看得見,比如彈出一個對話框
一個bound到visible或者foreground的activity的service
沒有前台組件,但仍可被用戶在屏幕上所見。當滿足如下任一條件時,進程被認為是可視的:
• 它包含著一個不在前台,但仍然為用戶可見的activity(它的onPause()方法被調用)。這種情況可能出現在以下情況:比如說,前台activity是一個對話框,而之前的 activity位於其下並可以看到。
• 它包含了一個綁定至一個可視的activity的服務。
可視進程依然被視為是很重要的,非到不殺死它們便無法維持前台進程運行時,才會被殺死。

3、Service process
正在運行的,不在上述兩種狀態的service
是由 startService() 方法啟動的服務,它不會變成上述兩類。盡管服務進程不會直接為用戶所見,但它們一般都在做著用戶所關心的事情(比如在後台播放mp3或者從網上下載東 西)。所以系統會盡量維持它們的運行,除非系統內存不足以維持前台進程和可視進程的運行需要。

4、background process
不可見狀態的activity進程,onstop被調用
包含目前不為用戶所見的activity(Activity對象的 onStop() 方法已被調用)。這些進程與用戶體驗沒有直接的聯系,可以在任意時間被殺死以回收內存供前台進程、可視進程以及服務進程使用。一般來說,會有很多背景進程 運行,所以它們一般存放於一個LRU(最後使用)列表中以確保最後被用戶使用的activity最後被殺死。如果一個activity正確的實現了生命周 期方法,並捕獲了正確的狀態,則殺死它的進程對用戶體驗不會有任何不良影響。

5、empty process
沒有運行任何component的進程,保留這個進程主要是為了緩存的需要
不包含任何活動應用程序組件。這種進程存在的唯一原因是做為緩存以改善組件再次於其中運行時的啟動時間。系統經常會殺死這種進程以保持進程緩存和系統內核緩存之間的平衡。
此外,一個進程的級別可能會由於其它進程依賴於它而升高。一個為其它進程提供 服務的進程級別永遠高於使用它服務的進程。比如說,如果A進程中的內容提供者為進程B中的客戶端提供服務,或進程A中的服務為進程B中的組件所綁定,則A 進程最低也會被視為與進程B擁有同樣的重要性。

『貳』 安卓系統優化方法


目前智能手機市場兩大系統分別是iOS和Android,並且已經形成了對立的陣營,Android用戶並不理會iOS用戶所謂的體驗好應用好是怎麼個好法,而iOS用戶則更不理解Android用戶刷機重啟摳電池的樂趣。在iOS用戶眼中,Android的形象幾乎可以用一個「卡」字來代替。其實Android經過了這幾年的發展,硬體水平已經有了很大的提高,再加上目前的優化,Android卡的情況已經有了很大程度的緩解,目前的雙核機型硬體配置十分強大,如帶告果還要說卡,也就是因為廠商定製ROM的優化原因。
其實Android的「卡」,可以得到徹底的解決,這就關繫到了Android的優化問題,而今天我們就探討下如何優化我們手中的Android機型。在這里筆者也要提醒大家,選購Android機型一定要選擇熱門機型,只有熱門機型才有足夠豐富的優化資宏行激源供我們選擇,切忌為了個性選擇偏門機型,Android熱門機型再是街機,也不會比iPhone還街吧?
刷機重啟摳電池
刷機是Android用戶的一大樂趣,部分用戶刷機是為了得到更好的易用性,比如小米的MIUI ROM,非常符合中國人的使用習慣,也有著足夠豐富的個性化設蔽襪定,是圖省事的朋友刷機的好選擇,不過對於追求高性能的朋友來說,MIUI的優化還有很大提升空間,人們紛紛選擇了對於ROM優化更加出色的CyanogenMod作為刷機的第一選擇。
MIUI ROM特色
CyanogenMod系列目前主打的ROM有CM 7.2和CM 9兩個,CM 7.2基於Android 2.3.7,而CM 9則基於Android 4.0.4,其中CM 7.2已經基本成熟,完美支持的機型很多,是大部分機友刷機的第一選擇,CM 9官方的ROM支持機型並不多,民間高手也都進行了各個機型的移植,官方支持的機型兼容性相當不錯,而移植情況並不樂觀。
CyanogenMod的LOGO
CM系列ROM忠實於AOSP,在底層驅動方面做了很多努力,刷入之後就會感覺手機流暢了許多,同時也支持了更多的美化和手機自定義能力,比如我們可以對手機的震動回饋做細致的調整,包括按下震動的強度,抬起震動的強度等,讓手機虛擬按鍵給我們更為真實的回饋,在CM ROM中,類似的設定非常多。
CM9 ROM截圖
目前大部分的ROM都是使用CM進行定製的,還有一部分是對官方原版ROM進行修改,僅有少部分的ROM是修改的AOSP的源碼,這些ROM指向都是谷歌Nexus系列的機型,比如GALAXY Nexus和Nexus S上的Codename和AOKP,就針對源碼做了很多修改,讓手機變得更流暢。
刷內核效果很好
僅僅刷手機的ROM是不夠的,雖然多了很多自定義的功能,流暢度已經高於官方的ROM,但依舊有很大提升的空間,這時候我們就需要通過刷內核來進一步優化,刷內核所能帶來的提升是相當明顯的,但是對於刷內核大家還是要謹慎。
國外著名論壇的內核發布區
刷內核相比刷ROM,是一個很小的工程,你的手機不必要Wipe,也就是說不用刪除手機內部的數據,刷一下也就幾分鍾的功夫,所以刷內核的時候,大家完全可以多下幾個內核,逐個進行測試,看看哪個內核更適合自己,就保留哪個內核。同時刷內核時我們要注意,內核需對應自己的手機版本,對應自己所刷的ROM,否則會造成手機無法啟動的現象,如果遇到無法啟動的現象,再刷其他可用內核就可以恢復。
Android機器人
大家會問了,說了這么半天,刷內核到底都有什麼作用呢?首先就是超頻,大部分內核會默認提供降壓超頻,並擁有多種超頻策略,來保證超頻的情況下更省電。其次,還提供更多調整,比如內存虛擬機的大小,顏色管理等等,甚至一個內核可以包括一些新的linux的補丁,比如最新的Linux 3.3所集成的CPU頻率補丁等等。
刷內核工具
事實上,一般的第三方ROM已經修改了手機的內核,達到了更流暢的目的,但ROM的製作速度遠遠比不上內核的調整速度,有時候一個ROM適用的內核在一天之內可能多次更新,所以我們可以嘗試不同的新內核,看看他們的超頻是不是能給我們帶來性能上質的提升,是不是能更省電,是不是能通過顏色調整讓我們看到更棒的畫面等等。
精簡內置應用
我相信Android用戶通過不斷的更換ROM和刷內核已經在流暢度上有了質的飛躍了,如果這時候你的手機已經比iPhone更流暢、更省電,那麼我們就可以收手了,如果你還不滿意,我們還有其他的路可選,精簡內置應用,就是一個可以大幅度提升流暢度的方法。像Google的服務就是大部分人精簡的對象。
跑分是性能的體現
Android系統和iOS與Windows Phone不同,這個系統擁有真正的後台運行能力,雖然iOS在推送方面做得很好,彌補了後台方面的不足,但是仍然無法與Android的真後台相比,但是由於Android的程序優先順序並不像iOS和Windows Phone那樣,為了流暢讓當前界面擁有最高優先順序,所以我們就要把Android手機後台不必要的進程關掉,以獲得最佳的性能。
RE管理器截圖
那麼精簡內部應用就是很好的選擇,因為在我們使用過程中,有許多Android內部應用程序是不必要的,而這些程序會在我們不用的時候悄悄的後台打開,對我們的使用造成影響。在精簡時,我們需要用到root文件管理器,同時需要保證手機已經開啟root許可權。
RE管理器截圖
進入system/app就可以進行精簡了,我們需要把root管理器的當前許可權設置成讀寫,並且修改需要刪除的軟體許可權,打開軟體執行操作的許可權,就可以對刪除內置軟體了,在精簡前,大家需要對軟體進行備份,或者備份整個ROM,如果你精簡掉系統程序,可能會造成無法開機的情況,重刷ROM可以解決,所以大家最好找到該機型、該ROM的精簡列表,以避免重復勞動。
還有其他優化
經過以上多方面的優化,我相信大家都已經得到了一個較為干凈、運行流暢的Android了,不過在很多程序中,我們還是會遇到卡頓的情況,對於一個極端追求流暢度的玩家來說,這樣的情況是絕對不允許發生的,因為我們還有進一步優化的空間。
CM超頻選項
之前我們介紹了CM系列ROM,而CM的ROM中有兩個選項的勾選可以進一步的提高流暢度,但是會損失一些畫面這些選項是貼圖差值抖動和16位透明度,貼圖差值抖動這個選項需要關閉,這個選項關閉後可以提高流暢度,但是在滑動菜單時會有不容易被發現的畫面損失,而16位透明度這個選項開啟會大幅度提高流暢度,但是一些純色的透明效果畫質會下降,比如Android滑動到邊緣的越界效果。
CM性能設置選項
在Android 4.0的ROM中,也有不少選項可以提高程序的流暢度,比如程序的GPU加速,使用GPU對2D程序的界面進行渲染,有效減輕界面滑動對於CPU的負擔,同時還能讓界面得到更好地渲染效果,不過這個選項會讓有些程序出現兼容性問題,而Android也不能單獨為某個程序開關GPU加速,所以GPU加速這個功能讓人又愛又恨。
Android 4.0強制GPU加速
在提到刷內核時,我們也提到了超頻內核,超頻內核在刷完後,會在ROM設置中提供給你多種內核超頻策略選擇,在大部分機型中,超頻不會增加CPU的耗電,因為廠商在CPU出廠前,為了保證CPU的穩定,為CPU設置了很安全的電壓和頻率,這顯得過於保守,而在同等的電壓下,CPU根據體質不同或多或少還有可以壓榨的空間,所以我們在保證穩定運行的情況下,還可以繼續對CPU進行超頻。
優化策略總結
本文我們從刷ROM開始提到了一些Android系統的優化,對於Android系統來說,流暢度是它相比其他系統最大的短板,其實Android的大部分手機有著相當好的硬體,所以流暢度大幅度提升完全不是難事,而各個廠商在Android手機出廠前給手機定製的ROM並沒有達到最優的優化效果,或多或少都有可提升的空間。
三星 GALAXY Nexus
所以我們也可以根據自己用手機的需要對手機進行徹頭徹尾的優化,從ROM開始讓手機變得徹底流暢起來,這里要跟大家囑咐的,也是我們多次重申的一點:一定要選擇普及率較高的Android機型,尤其是在國外的高普及度,像谷歌的Nexus系列手機被譽為親兒子,也是因為它開放了源代碼,在其他手機為第三方ROM撓頭的時候,Nexus系列已經早早的開始各種優化了。
ClockworkMod的LOGO
其次,除了ROM資源,我們也要考慮到其他資源,比如內核,各大手機廠商的熱門機型,內核資源也是不一樣的,早期摩托羅拉的里程碑很開放,所以有著大量可刷的內核,而到了後來摩托羅拉機型很封閉,可刷的內核資源就相當匱乏,雖然ROM很多,但刷來刷去都大同小異,刷機的樂趣銳減。這里谷歌的Nexus系列再一次做了表率。
AOSP網頁截圖
再加上一些精簡和設置操作,你會發現,你的手機流暢度完全可以翻幾番,即使是官方有新的升級你可能都懶得去理,因為你知道,官方的升級不可能帶來刷機所給你的流暢度。這也是iOS玩家所不理解的刷機重啟扣電池的樂趣。他們更不理解的是Android的流暢度怎麼能超越iOS呢?如果您按照小編交給你的這些方法,安卓手機不會再出現卡殼的現象了。

『叄』 Android乙太網和wifi共存並設置Wif優先順序最高

1.ip route show //顯示路由
2.ip rule list //顯示路由表規則優先順序
3.ip route flush cache //刷新路由緩存
4.ifconfig usb0 down 關閉usb0網路介面
5.ifconfig usb0 up 打開usb0網路介面

此時只是wif和乙太網能共存,但是這個時候由於乙太網的優先順序比,wif優先順序高,因此我們需要改動 EthernetNetworkFactory 的NETWORK_SCORE小於60即可,還需要將WifiStateMachine的優先順序設置為Integer.MAX_VALUE,這樣確保wif的優先順序為最高

『肆』 android自啟動怎麼優先順序高

進程的優先順序 12); //實例化按鈕對象 Button btnDownload=(Button)findViewById(RMessage); Button btnDownload=(Button)findViewById(R.id.btnDownload); Button btnUpdate=(Button)findViewById(R.id.btnUpdate); //注冊按鈕的單擊事件 btnDownload.setOnClickListener(this); btnUpdate.setOnClickListener(this); } //實現按鈕的單擊時間事件 @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnDownload: //創建對象 MyAsyncTask myAsyncTask=new MyAsyncTask(); myAsyncTask.execute(null);//執行任務 break; case R.id.btnUpdate: break; } } private class MyAsyncTask extends AsyncTask<URL, Integer, String>{ //在UI中執行,更新UI @Override protected void onProgressUpdate(Integer... values) { mProgressBar.setProgress(values[0]); if(values[0]<100){ mTextView.setText("progress="+values[0]+"%"); } } //現在work thread中執行耗時操作 @Override protected String doInBackground(URL... params) { for (int i = 0; i < 100; i++) { publishProgress(i+1);//向onProgressUpdate發送消息 try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } return "download finished"; } //doInBackground結束後,執行本方法,result是doInBackground方法返回的數據 @Override protected void onPostExecute(String result) { mTextView.setText(result); } } } 12.9. 軟體開發術語 12.9.1性能 臨時對象越多,垃圾回收(GC)的頻率越高 GC佔用CPU,CPU被佔用時,無法響應用戶的操作 用戶感覺到卡,影響用戶體驗。 12.9.2資源池 存放一定數量的同樣類型的對象,當程序需要使用時,可以從資源池中獲取,使用完成,收回資源池。 等待下一次被使用。 示例:從資源池中獲取Message對象。 Message msg=Message.obtainMessage(); 提示:若之前沒有創建過Message,則創建給對象。Android系統會在適當時候回收該對象,方便下次取用。 提示:解決性能問題的前提是不能影響功能。

『伍』 Android提升服務進程優先順序

在android應用開發時,我們經常會在後台開一個service,來處理一些業務操作。最近公司的一個項目就是,通過service不斷地和硬體設備交互,獲取數據,在頁面長時間停留在一個頁面時,手機的屏幕會出項鎖屏的狀況,這時,我們的應用的優先順序就會下降,很多次,等打開屏幕的瞬間,我發現原來的原來的進程被殺死了,應用又回到了首頁,尤其是在Android高版本的系統中尤為突出。所以下面我們通過提成優先順序的方式,來進行進程保活

2.在程序開始的地方注冊這個廣播接收者

4.定義這個activity的style屬性 value - style.xml 文件

5.Androidmanifest文件中注冊這個activity

大功告成!
經過測試,本人的華為榮耀9i,原來存在的問題被解決了,希望大家能互相交流經驗。

『陸』 android怎麼提高線程的優先順序

線程調度 計算機通常只有一個CPU,在任意時刻只能執行一條機器指令,每個線程只有獲得CPU的使用權才能執行指令.所謂多線程的並發運行,其實是指從宏觀上看,各個線程輪流獲得CPU的使用權,分別執行各自的任務.在運行池中,會有多個處於就緒狀態的線程在等待CPU,java虛擬機的一項任務就是負責線程的調度,線程調度是指按照特定機制為多個線程分配CPU的使用權. 有兩種調度模型:分時調度模型和搶占式調度模型。 分時調度模型是指讓所有的線程輪流獲得cpu的使用權,並且平均分配每個線程佔用的CPU的時間片這個也比較好理解。 java虛擬機採用搶占式調度模型,是指優先讓可運行池中優先順序高的線程佔用CPU,如果可運行池中的線程優先順序相同,那麼就隨機選擇一個線程,使其佔用CPU。處於運行狀態的線程會一直運行,直至它不得不放棄CPU。 一個線程會因為以下原因而放棄CPU。 1 java虛擬機讓當前線程暫時放棄CPU,轉到就緒狀態,使其它線程或者運行機會。 2 當前線程因為某些原因而進入阻塞狀態 3 線程結束運行 需要注意的是,線程的調度不是跨平台的,它 不僅僅取決於java虛擬機,還依賴於操作系統。在某些操作系統中,只要運行中的線程沒有遇到阻塞,就不會放棄CPU;在某些操作系統中,即使線程沒有遇到阻塞,也會運行一段時間後放棄CPU,給其它線程運行的機會。 java的線程調度是不分時的,同時啟動多個線程後,不能保證各個線程輪流獲得均等的CPU時間片。 如果希望明確地讓一個線程給另外一個線程運行的機會,可以採取以下辦法之一。 調整各個線程的優先順序 讓處於運行狀態的線程調用Thread.sleep()方法 讓處於運行狀態的線程調用Thread.yield()方法 讓處於運行狀態的線程調用另一個線程的join()方法

『柒』 Android 進程管理篇(五)-調度策略與優先順序

接上篇cpuset,這篇來看看進程優先順序與調度策略管理。

Linux中,優先順序號一共有0-139,其中0-99的是RT(實時)進程,100-139的是非實時進程。
數字越低優先順序越高。

SCHED_IDLE idle狀態低優先順序進程調度

先看Process中調度策略的劃分,與上面介紹的一樣。

首先在AMS中封裝了FIFO和NORMAL的兩個策略,NORMAL好說,看看FIFO在哪用到

這里Process.setThreadScheler並沒有太多的應用,我們直接來看優先順序設置吧。else中將top app的UI線程與render線程都設置為TOP_APP_PRIORITY_BOOST優先順序,nice值為-10,非常高。

這里主要調用androidSetThreadPriority方法

這里通過set_sched_policy來調整調度策略,並通過setpriority設置進程優先順序。這里不特意區分進程與線程了,反正在linux中都是進程。

這里與前面的cpuset非常相似,依然是寫節點,節點前面也提了就是:

那麼這里又引入了一個schedtune子系統,簡單介紹下:
schedtune是ARM/Linaro為了EAS新增的一個子系統,主要用來控制進程調度選擇CPU以及boost觸發。通過權重來分配CPU負載能力來實現快速運行。高權重意味著會享受到更好的cpu負載來處理對應的任務,換句話說你能享受相對更好的cpu運行性能。

簡單梳理下schedtune和不同類型SchedPolicy之間的對應關系:

看下具體文件夾內容:

系統配置:
這里/dev/stune相關配置只做了這么一個

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:235
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726