緩存保活信息
① 如何清除高速緩存中的信息
IE 和 Navigator 都在硬碟中緩存你最近訪問過的網頁。當你再次訪問這些網頁時,高速緩存信息能夠加快網頁的訪問速度,但這也向窺探者揭開了你的秘密。要清除高速緩存中的信息,在 Navigator 中可在 Edit 菜單中選擇 Preferences,然後單擊 Advanced 選項旁邊的+號,再單擊 Cache,最後單擊 Clear Disk Cache 按鈕;在Explorer中,應在View菜單中選擇 Internet Options,然後進入 General 選項卡,單擊 Delete Files 按鈕。你還可以對瀏覽器進行設置,使它根本不使用高速緩存。當然,這會減慢網頁訪問速度。在 Navigator 中,依次選擇 Edit、Preferences、Advanced,單擊 Cache,並把 Disk Cache 選項框的值設置為0。在 IE 中,依次選擇 View、General 和 Settings,然後把滑塊移動到最左端。
② 怎樣清理電腦緩存
問題一:windows7怎麼清理電腦緩存 win7清理緩存方法如下:
一、清理磁碟緩存文件
1、點擊「開始菜單」,選擇「附件」,打開「系統工具」選項。
2、打開「磁碟清理程序」,然後選擇需要清理的磁碟
3、接下來,主要選擇一些程序的臨時文件,以及軟體推薦進行清理的項目即可,然後點擊「確定」。
4、後程序自動開始進行磁碟清理的操作,只需要等待即可,一般來說,系統磁碟清理的過程比較緩慢,需要等待的時間比較長。
二:清理IE緩存文件
1、打開IE瀏覽器,選擇「Internet 選項」
2、然後在IE選項中,會看到IE臨時文件的選項,然後點擊「刪除」。
3、在刪除選項中,一般來說,按照軟體默認選擇推薦清理的項目即可,然後點擊「刪除」,最後IE瀏覽器會提醒已經成功清理了IE緩存文件。
三:使用第三方程序軟體 進行清理
1、使用360安全衛士軟體,點擊「電腦清理」選項。
2、然後可以點擊「清理垃圾」,由於軟體已經設置了推薦清理的選項,可以清楚的看到,關於系統以及瀏覽器和各種常用的應用軟體的緩存文件的清理選項已經進入了清理列表,因此,點擊「開始掃描」即可。
3、待軟體掃描完成之後,點擊「立即清理」,即可輕輕鬆鬆將所有的緩存文件進行一鍵清理即可
問題二:電腦在哪裡清理緩存 1、先是清理IE上面的緩存!IE緩存清理方法。打開瀏覽器點擊右上角的工具。然後點擊刪除的流量歷史記錄!然後我們把所有的勾打上。密碼的還是可以留著的。點擊確定即可刪除IE的緩存。
2、當你QQ文件裡面的緩存太大的時候,登錄QQ不久就會提示刪除緩存的信息。我們點擊進入即可刪除QQ文件夾裡面的緩存。我們還可以設置自動刪除QQ產生的緩存。
3、還可以使用清理磁碟的方法來實現。清理磁碟的時候電腦最好是不要登錄其他什麼軟體。避免損壞磁碟!清理磁碟我們可以右鍵點擊需要清理的磁碟。然後點擊屬性就能看到一個清理磁碟的按鈕啦。
4、或者是點擊開始按鈕。然後點擊運行。輸入sageset。然後在選擇要清理的磁碟,點擊確定之後和上面的方法就差不多了。
5、如果覺得以上的方法都很麻煩。那我們可以下載一個電腦管家來使用。電腦管家裡面都會有清理緩存的選項的。一般都在系統優化裡面。點擊就能一件清理啦。
問題三:請問怎樣清理電腦緩存?我的電腦反應太慢了? 你好
以下是本人整理的電腦優化、電腦加速的方法,請參考。
1 定期的,用魯大師等軟體,測下電腦各項溫度,如要溫度過高會引起電腦運行緩慢,就有可能是內部風扇壞什麼的,對電腦內的灰塵進行清理,台式機關機後打開機箱,用吹風機,冷風吹。
2 平時要常用 360 衛士 、金山衛士等工具清理系統垃圾和上網產生的臨時文件(ie 緩存),查殺惡意軟體。
3 電腦配置差,盡量把虛擬內存設置大點,(xp)右擊我的電腦 屬性 高級 性能…… 那裡 設置 高級 更改
在自定義那裡 設置為 2000 - 4000
(win7) 計算機-屬性-高級系統設置-性能設置-「高級」選項卡-虛擬內存-更改-選擇要設置的驅動器c盤,選擇系統管理大小或者根據需要選擇自定義大小-設置-確定。
4 殺毒軟體裝種占資源小的,如 nod32,或只裝一個輔助殺毒軟體。
5 盡量設置ip 為靜態ip ,可以減少電腦開機啟動時間和進入桌面後的反映時間。(cqjiangyong總結:很多人電腦開機後前幾分鍾動不了都是這個原因)
6 電腦桌面不要放太多文件和圖標,會使電腦反應變慢的,軟體盡量不要安裝在c盤。
7 關閉一些啟動程序。開始-運行-輸入msconfig―確定-在「系統配置實用程序」窗口中點選「啟動」-啟動 ,除輸入法(Ctfmon)、殺毒軟體外,一般的程序都可以關掉。也可以用360等軟體,智能優化開機加速。
8 建議只裝一個主殺供軟體,裝多個會占電腦資源,會使電腦更慢。
9 定期的對整理磁碟碎片進行整理,打開我的電腦 要整理磁碟碎片的驅動器―屬性―工具--選擇整理的磁碟打開「磁碟碎片整理程序」窗口―分析―碎片整理―系統即開始整理。
10 安裝個優化大師或超級兔子等 電腦優化軟體,優化下,電腦也會快很多!!
11 現在的系統,占內存也比較大,有必要的話,加多條內存,也會快很多。
12 電腦硬碟用久了,也會使電腦變慢,重新分區安裝可以修復邏輯壞,電腦也會快點,硬碟物理讀寫速度慢,也只能是換個好點的!!!
如果幫到你,請選為滿意答案吧!!!
問題四:如何刪除QQ在電腦上的緩存 刪除QQ在電腦上的緩存方法:
1、登陸QQ。
2、點擊QQ面板」設置「按鈕。
3、點擊左側的」文件管理「。
4、在文件管理下,打開文件夾看看文件,Image裡面是qq聊天過程中產生的一些圖片,進入Image文件夾可以手動刪除不需要的圖片。
5、定期清理設置,可以提醒及時清理緩存。安裝qq管家的話,可以直接點擊」前去清理「即可,方便快捷。
問題五:不用軟體怎麼清理電腦緩存 可以進IE――屬性――刪除cookies.影響上網速度的還可以對IE緩存進可以控制,定期進行刪除,可以對IE――屬性――Internet臨時文件――設置,把緩存容量控制在500到800M之間,這樣就不會使C盤負載太多的垃圾文件。做完之後再對C盤清理下垃圾文件,具體方法進入我的電腦,C盤右擊,屬性下的清理,對彈出的全部選上,最後點清理。
問題六:如何刪除電腦裡面的緩存文件 右擊我的電腦/屬性/高級/性能中的設置/高級/虛擬內存中的更改注意:先選中驅動器[卷標]中的C:後點選「無分頁文件」在按「設置」按鈕,這時已經取消了C盤的虛擬內存。其他盤的緩存虛擬內存一樣操作,重新啟動電腦設置生效。如果你想使C盤空間變小點的話可以刪除以下文件夾中的內容: c:\Documents and Settings\用戶名\Cookies\下的所有文件(保留index文件)c:\Documents and Settings\用戶名\Local Settings\Temp\下的所有文件(用戶臨時文件)c:\Documents and Settings\用戶名\LocalSettings\Temporary Internet Files\下的所有文件(頁面文件)c:\Documents and Settings\用戶名\Local Settings\History\下的所有文件(歷史紀錄)c:\Documents and Settings\用戶名\Recent\下的所有文件(最近瀏覽文件的快捷方式)c:\WINDOWS\Temp\下的所有文件(臨時文件)c:\WINDOWS\ServicePackFiles(升級sp1或sp2後的備份文件)c:\WINDOWS\Driver Cache\i386下的壓縮文件(驅動程序的備份文件)c:\WINDOWS\SoftwareDistribution\download下的所有文件如果對系統進行過windoes updade升級,則刪除以下文件:c:\windows\下以 $NtU... 開頭的隱藏文件。希望對您有用滿意請採納
問題七:如何清除電腦緩存里的東西? 如果你用的是IE瀏覽器(就是有個e圖標的),就關閉瀏覽器。然後右鍵點擊IE圖標-屬性,點擊第二行中間的「刪除文件」就可以清理臨時的文件了。如果你用的是其他瀏覽器,通常會在瀏覽器窗口右上角的「工具」菜單「清理上網記錄」(文字會有一點不同是正常的,不同的瀏覽器用不同的名字)就可以清理了,不過如果是Firefox不太推薦用這個。你也可以試試這個,把這行文字復制到記事本那裡去。 @echo off ::增強版 color 2f Title echo. echo echo. echo *** 耗牛開始執行清理…… echo. echo 正在檢查cookies、歷史紀錄等目錄位置(當前用戶)…… reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v Cache>%temp%\cleantmp.txt reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v Cookies>>%temp%\cleantmp.txt reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v History>>%temp%\cleantmp.txt reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v NetHood>>%temp%\cleantmp.txt reg query HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders /v Recent>>%temp%\cleantmp.txt echo 正在清理Cookies、IE緩存、歷史紀錄等(當前用戶)…… for /f tokens=3* %%a in (%temp%\cleantmp.txt) do ( for /d %%i in (%%a %%b\*.*) do rd /s /q %%i del /a /f /s /q %%a %%b\*.* ) echo 正在清理臨時文件 (系統目錄)…… del /a /f /s /q %userprofile%\Locals~1\Tempor~1\*.* del /a /f /s /q &qu......>>
問題八:電腦緩沖區怎麼清理? 你說的緩沖區指的應該是IE的緩沖區吧,IE的緩沖區清理是:
打開IE→菜單的「工具(T)」→選「Internet選項」→點擊瀏覽記錄中的按鈕「刪除(D)」
問題九:電腦運行裡面的緩存怎麼清除? 清理電腦緩存,有很多方法,可以通過以下方式,進行清理:
1、開始――程序――附件――系統工具――磁碟碎片整理程序――碎片整理――C盤的可用空間達到75%以上最佳――每個磁碟都必須進行碎片整理――直到沒有紅色出現。
2、雙擊打開「我的電腦」――右鍵C盤――屬性――磁碟清理――選項全部勾選――確定。再如此清理D、E、F、G盤。
3、打開360安全衛士――電腦清理――清理垃圾――設置(全部勾選)――全選――開始掃描――立即清理。然後把其它的「一鍵清理」「清理插件」「清理痕跡」「清理注冊表」依次做完。 再點擊「優化加速」――啟動項――除了「輸入法切換工具ctfmon」償「360安全衛士」外,其它全部禁止開機啟動。
問題十:如何清理電腦應用軟體緩存 打開計算機c盤
右鍵-磁碟清理-會刪除瀏覽器瀏覽記錄和系統緩存
那樣 電腦會運行的快一點
③ 誰能告訴我緩存是什麼怎麼設置緩存!謝謝
CPU的緩存是這樣定義的:
緩存(Cache)
CPU進行處理的數據信息多是從內存中調取的,但CPU的運算速度要比內存快得多,為此在此傳輸過程中放置一存儲器,存儲CPU經常使用的數據和指令。這樣可以提高數據傳輸速度。可分一級緩存和二級緩存。
一級緩存
即L1
Cache。集成在CPU內部中,用於CPU在處理數據過程中數據的暫時保存。由於緩存指令和數據與CPU同頻工作,L1級高速緩存緩存的容量越大,存儲信息越多,可減少CPU與內存之間的數據交換次數,提高CPU的運算效率。但因高速緩沖存儲器均由靜態RAM組成,結構較復雜,在有限的CPU晶元面積上,L1級高速緩存的容量不可能做得太大。
二級緩存
即L2
Cache。由於L1級高速緩存容量的限制,為了再次提高CPU的運算速度,在CPU外部放置一高速存儲器,即二級緩存。工作主頻比較靈活,可與CPU同頻,也可不同。CPU在讀取數據時,先在L1中尋找,再從L2尋找,然後是內存,在後是外存儲器。所以L2對系統的影響也不容忽視。
緩存目前是封裝在CPU晶元中的,一般沒有辦法設置。
④ Android 如何進行進程保活
每一個 Android 應用啟動後至少對應一個進程,有的是多個進程,而且主流應用中多個
進程的應用比例較大
對於任何一個進程,我們都可以通過 adb shell ps|grep <package_name>的方式來查看
它的基本信息
Android 中的進程跟封建社會一樣,分了三流九等,Android 系統把進程的劃為了如下
幾種(重要性從高到低),網上多位大神都詳細總結過(備註:嚴格來說是劃分了 6 種)。
場景:
1.某個進程持有一個正在與用戶交互的 Activity 並且該 Activity 正處於 resume 的
狀態。
2.某個進程持有一個 Service,並且該 Service 與用戶正在交互的 Activity 綁定。
3.某個進程持有一個 Service,並且該 Service 調用 startForeground()方法使之位於前台運行。
4.某個進程持有一個 Service,並且該 Service 正在執行它的某個生命周期回調方法,比如 onCreate()、 onStart()或 onDestroy()。
5.某個進程持有一個 BroadcastReceiver,並且該 BroadcastReceiver 正在執行其onReceive()方法。用戶正在使用的程序,一般系統是不會殺死前台進程的,除非用戶強制停止應用或者系統內存不足等極端情況會殺死。
場景:
1.擁有不在前台、但仍對用戶可見的 Activity(已調用 onPause())。
2.擁有綁定到可見(或前台)Activity 的 Service
用戶正在使用,看得到,但是摸不著,沒有覆蓋到整個屏幕,只有屏幕的一部分可見進程
不包含任何前台組件,一般系統也是不會殺死可見進程的,除非要在資源吃緊的情況下,
要保持某個或多個前台進程存活
場景
1.某個進程中運行著一個 Service 且該 Service 是通過 startService()啟動的,與用戶看見的界面沒有直接關聯。
在內存不足以維持所有前台進程和可見進程同時運行的情況下,服務進程會被殺死
場景:
在用戶按了"back"或者"home"後,程序本身看不到了,但是其實還在運行的程序,
比如 Activity 調用了 onPause 方法系統可能隨時終止它們,回收內存
場景:
某個進程不包含任何活躍的組件時該進程就會被置為空進程,完全沒用,殺了它只有好處沒壞處,第一個干它!
上面是進程的分類,進程是怎麼被殺的呢?系統出於體驗和性能上的考慮,app 在退到
後台時系統並不會真正的 kill 掉這個進程,而是將其緩存起來。打開的應用越多,後台緩存的進程也越多。在系統內存不足的情況下,系統開始依據自身的一套進程回收機制
來判斷要 kill 掉哪些進程,以騰出內存來供給需要的 app, 這套殺進程回收內存的機制
就叫 Low Memory Killer。那這個不足怎麼來規定呢,那就是內存閾值,我們可以使用
cat /sys/mole/lowmemorykiller/parameters/minfree 來查看某個手機的內存閾值。
其實系統在進程回收跟內存回收類似也是有一套嚴格的策略,可以
自己去了解,大概是這個樣子的,oom_adj 越大,佔用物理內存越多會被最先 kill 掉,OK,那麼現在對於進程如何保活這個問題就轉化成,如何降低 oom_adj 的值,以及如
何使得我們應用占的內存最少。
據說這個是手 Q 的進程保活方案,基本思想,系統一般是不會殺死前台進程的。所以要
使得進程常駐,我們只需要在鎖屏的時候在本進程開啟一個 Activity,為了欺騙用戶,
讓這個 Activity 的大小是 1 像素,並且透明無切換動畫,在開屏幕的時候,把這個 Activity
關閉掉,所以這個就需要監聽系統鎖屏廣播,我試過了,的確好使,如下。
如果直接啟動一個 Activity,當我們按下 back 鍵返回桌面的時候,oom_adj 的值是 8,
上面已經提到過,這個進程在資源不夠的情況下是容易被回收的。現在造一個一個像素
的 Activity。
為了做的更隱藏,最好設置一下這個 Activity 的主題,當然也無所謂了
在屏幕關閉的時候把 LiveActivity 啟動起來,在開屏的時候把 LiveActivity 關閉掉,所以
要監聽系統鎖屏廣播,以介面的形式通知 MainActivity 啟動或者關閉 LiveActivity。
現在 MainActivity 改成如下
按下 back 之後,進行鎖屏,現在測試一下 oom_adj 的值
果然將進程的優先順序提高了。
但是還有一個問題,內存也是一個考慮的因素,內存越多會被最先 kill 掉,所以把上面
的業務邏輯放到 Service 中,而 Service 是在另外一個 進程中,在 MainActivity 開啟這
個服務就行了,這樣這個進程就更加的輕量,
OK,通過上面的操作,我們的應用就始終和前台進程是一樣的優先順序了,為了省電,
系統檢測到鎖屏事件後一段時間內會殺死後台進程,如果採取這種方案,就可以避免了
這個問題。但是還是有被殺掉的可能,所以我們還需要做雙進程守護,關於雙進程守護,
比較適合的就是 aidl 的那種方式,但是這個不是完全的靠譜,原理是 A 進程死的時候,
B 還在活著,B 可以將 A 進程拉起來,反之,B 進程死的時候,A 還活著,A 可以將 B
拉起來。所以雙進程守護的前提是,系統殺進程只能一個個的去殺,如果一次性殺兩個,
這種方法也是不 OK 的。
事實上
那麼我們先來看看 Android5.0 以下的源碼,ActivityManagerService 是如何關閉在應用
退出後清理內存的
在應用退出後,ActivityManagerService 不僅把主進程給殺死,另外把主進程所屬的進
程組一並殺死,這樣一來,由於子進程和主進程在同一進程組,子進程在做的事情,也
就停止了。所以在 Android5.0 以後的手機應用在進程被殺死後,要採用其他方案。
這種大部分人都了解,據說這個微信也用過的進程保活方案,移步微信 Android 客戶端
後台保活經驗分享,這方案實際利用了 Android 前台 service 的漏洞。
原理如下
對於 API level < 18 :調用 startForeground(ID, new Notification()),發送空的
Notification ,圖標則不會顯示。
對於 API level >= 18:在需要提優先順序的 service A 啟動一個 InnerService,兩個服務
同時 startForeground,且綁定同樣的 ID。Stop 掉 InnerService ,這樣通知欄圖標即
被移除。
public class KeepLiveService extends Service{
public static final int NOTIFICATION_ID=0x11;
public KeepLiveService() {
}
@Override
public IBinder onBind(Intent intent){
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onCreate() {
super.onCreate(); //API 18 以下,直 接發 送 Notification 並 將 其 置 為 前 台
if(Build.VERSION.SDK_INT<Build.VERSION_CODES.JELLY_BEAN_MR2){
startForeground(NOTIFICATION_ID,new Notification());
} else { //API 18 以上,發送 Notification 並將其置為前台後,啟動 InnerService
Notification.Builder builder=new Notification.Builder(this);
builder.setSmallIcon(R.mipmap.ic_launcher);
startForeground(NOTIFICATION_ID, builder.build());
startService(new Intent(this, InnerService.class));
}
}
public class InnerService extends Service{
@Override public IBinder onBind(Intent intent) {
return null;
}
@Override public void onCreate() {
super.onCreate(); //發送與 KeepLiveService中 ID 相同的 Notification,然後將其取消並取消自己的前台顯示
Notification.Builder builder = new Notification.Builder(this);
builder.setSmallIcon(R.mipmap.ic_launcher);startForeground(NOTIFICATION_ID,
builder.build());
new Handler().postDelayed(new Runnable() {
@Override public void run() {
stopForeground(true);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.cancel(NOTIFICATION_ID);
stopSelf();
}
},
100);
}
}
}
在沒有採取前台服務之前,啟動應用,oom_adj 值是 0,按下返回鍵之後,變成 9(不
同 ROM 可能不一樣)
相互喚醒的意思就是,假如你手機里裝了支付寶、淘寶、天貓、UC 等阿里系的 app,
那麼你打開任意一個阿里系的 app 後,有可能就順便把其他阿里系的 app 給喚醒了。
這個完全有可能的。此外,開機,網路切換、拍照、拍視頻時候,利用系統產生的廣播
也能喚醒 app,不過 Android N 已經將這三種廣播取消了。
如果應用想保活,要是 QQ,微信願意救你也行,有多少手機上沒有 QQ,微信呢?或
者像友盟,信鴿這種推送 SDK,也存在喚醒 app 的功能。
拉活方法
JobSheler是作為進程死後復活的一種手段,
native進程方式最大缺點是費電,Native
進程費電的原因是感知主進程是否存活有兩種實現方式,在 Native 進程中通過死循環
或定時器,輪訓判斷主進程是否存活,當主進程不存活時進行拉活。其次 5.0 以上系統
不支持。 但是 JobSheler 可以替代在 Android5.0 以上 native 進程方式,這種方式即
使用戶強制關閉,也能被拉起來,親測可行。
JobSheler@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public class MyJobService extends JobService {
@Override
public void onCreate() {
super.onCreate();
startJobSheler();
}
public void startJobSheler() {
try {
JobInfo.Builder builder = new JobInfo.Builder(1,new ComponentName(getPackageName(), MyJobService.class.getName()));
builder.setPeriodic(5); builder.setPersisted(true); JobScheler jobScheler =(JobScheler)
this.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheler.schele(builder.build());
}
catch
(Exception ex)
{ ex.printStackTrace(); } }
@Override
public boolean onStartJob(JobParameters jobParameters) {
return false;
} @Override public boolean onStopJob(JobParameters jobParameters) {
return false;
}
}
這個是系統自帶的,onStartCommand 方法必須具有一個整形的返回值,這個整形的返
回值用來告訴系統在服務啟動完畢後,如果被 Kill,系統將如何操作,這種方案雖然可
以,但是在某些情況 or 某些定製 ROM 上可能失效,我認為可以多做一種保保守方案。
1.START_STICKY
如果系統在 onStartCommand 返回後被銷毀,系統將會重新創建服務並依次調用
onCreate 和 onStartCommand(注意:根據測試 Android2.3.3 以下版本只會調用
onCreate 根本不會調用 onStartCommand,Android4.0 可以辦到),這種相當於服務
又重新啟動恢復到之前的狀態了)。
2.START_NOT_STICKY
如果系統在 onStartCommand 返回後被銷毀,如果返回該值,則在執行完
onStartCommand 方法後如果 Service 被殺掉系統將不會重啟該服務
3.START_REDELIVER_INTENT
START_STICKY 的兼容版本,不同的是其不保證服務被殺後一定能重啟。
4.相比與粘性服務與系統服務捆綁更厲害一點,這個來自愛哥的研究,這里說的系統服務
很好理解,比如 NotificationListenerService,NotificationListenerService 就是一個監聽
通知的服務,只要手機收到了通知,NotificationListenerService 都能監聽到,即時用戶
把進程殺死,也能重啟,所以說要是把這個服務放到我們的進程之中,那麼就可以呵呵
了
所以你的應用要是有消息推送的話,那麼可以用這種方式去欺騙用戶。
⑤ Android保活方案
系統出於性能和體驗上的考慮,APP退到後台後並不會真正的kill、掉進程,而是將其緩存起來。
打開的應用越多,緩存的應用也就越多,在系統進程不足的情況下,系統根據自己的一套進程回收機制,來判斷kill掉哪些進程,以騰出進程給需要的app,這套進程回收機制叫做low memory killer。
內存閥值,每個手機都不一樣,當可用內存小於該值得時候,Android就會殺死對應優先順序得進程。
進程的優先順序通過oom_adj來判斷,oom_adj取值如下:
0-3是比較安全的oom_adj一般不會被系統殺死的,所以我們只要保證自己的app oom_adj在0-3之間就可以了。
可以通過adb命令:cat /proc /4181/oom_adj來查看自己app的oom_adj的值
4181是進程號
原理:手機關閉屏幕的時候,偷偷創建一個activity,讓應用成為前台進程,打開屏幕時關閉activity,這樣用戶就不會發現什麼異常,我們知道前台應用的oom_adj為0是不會被殺死的,這樣就達到看保活的目的。
缺點:activity不夠干凈,只有在息屏的時候才生效,存在局限性比較大,而且谷歌原生的系統息屏的時候不會清理進程,但是現在很多廠商會在息屏的時候清理內存,所以本方案的可行性不高,可以作為了解。
保活原理:啟動一個前台服務,從而拉高整個應用的優先順序。
因為一旦通知被用戶幹掉那麼該保活方案就不好用了,所以通知圖標存在與否是該方案是否可行的關鍵。
但是該方案是谷歌官方承認的保活方案,所以可行性還是很高的。
需要適配
API<18通知圖標不會顯示
API>=18&&API<26可以啟動雙服務,綁定同樣的D,然後stop
這個方法的原理是8.0系統之前會根據服務的id來判斷通知,那麼第二個id設置跟第一個相同,然後自殺,系統就會誤認為此通知已死就不會通知了,那麼通知欄上面就不會顯示
API>=26後暫時沒有方式能夠隱藏
8.0之後不可以創建同樣的id的通知,所以此隱藏通知的方法就不好用了,當然了,通知顯示與否不是該方案成功的評判標准,所以說還是可以用的。
在發生特定系統事件時,系統會發出廣播,通過在 Androidmanifest中靜
態注冊對應的廣播監聽器,即可在發生響應事件時拉活
但是從 android7.0開始,對廣播進行了限制,而且在8.0更加嚴格該方法就不適用了。
有多個app在用戶設備上安裝,只要開啟其中一個就可以將其他的app也拉
活。比如手機里裝了手Q、QQ空間、興趣部落等等,那麼打開任意一個app後,其
他的app也都會被喚醒
系統每隔一段時間會進行賬戶同步,當系統去賬戶同步的時候(不一定多長時間,跟系統有關),我們就去拉活app,這個方案是非常穩定的,當然了國內的系統都是定製的,所以還是需要一定的適配的。
優點:系統喚醒,比較穩定
缺點:時間不能把控
JobScheler允許在特定狀態與特定時間間隔周期執行任務。可以利
用它的這個特點完成保活的功能,效果即開啟一個定時器,與普通定時器不
同的是其調度由系統完成。
同樣在某些ROM可能並不能達到需要的效果
⑥ 進程保活
一 、問:什麼是進程保活?
答:進程保活就是進程永遠存在內存中,是殺不死的,就算殺死了也會有辦法重新啟動起來,其實這些並不是流氓手段,很多情況下,如果你想給你的用戶提供服務,就必須有一個進程常駐著,便於在特定的時候做一些特定的事情,比如廣播接受者,他就不支持靜態注冊,也就是說如果我們想接受屏幕開關啟動的廣播,必須要在進程中動態注冊,這個時候如果沒有一個常駐的進程,鎖屏業務就無法正常的為用戶展開服務。
二、問:進程是怎麼死掉的呢?
答:其實進程被殺死的原因,一方面是人為的,二、可能被第三方應用殺死,如殺敵軟體等。
三、問:Android進程的優先順序?
答:
1、前台進程 (Foreground process):用戶當前操作所在的進程,當內存不足以承擔前台進程的使用,才有可能回收
2、可見進程(Visible process):沒有任何前台組件,但是仍然會影響屏幕上所見內容,他是一種極為重要的進程,除非為了維持前台進程,因內存不足,有可能會回收掉可見進程,否則系統是不會回收可見進程。
3、服務進程(Service process):他與用戶所見的內容是沒有直接關聯,但是他們通常執行一些用戶關心的操作,比如說在後台獲取網路數據,後台播放音樂,後台進行一些數據計算等。被殺死的原因:也是為了
支持前台進程和可見進程,因內存不足情況下才會被回收。
4、後台進程(BaclGround process):對用戶的體驗沒有直接的影響,用戶可以隨時終止他們,這個進程是為了供給上面三個進程來使用的,通常在後台進程運行著很多操作,他們保存在一個列表當中,為了確保用戶最近查看Activit的進程最後一個被終止,他是一個LRU演算法,
5、空進程(Empty process) :保存這個進程的唯一目的就是用來做緩存,以縮短下次在運行組件所需的啟動時間,為了使系統總體的資源在進程緩存和內存底層之間保持平衡。它是不包括任何組件的進程.
四、問:Android進程的回收策略?
答:Android進程的回收策略主要是通過Low memory killer機制來完成的。
Low memory killer:通過一些比較復雜的評分機制,對進程進行打分,然後講分數的進程判定為bad進程,殺死並釋放內存。Low memory killer是定時進行檢查的,它主要是通過進程的OOM_ODJ來判斷進程的優先順序。當OOM_ODJ的值越小,進程的優先順序越高,而OOM_ODJ越不會去回收。反之就會被回收。
注意:Low memory killer和out memory不一樣的地方:out memory機制只有當系統內存不足的時候才會啟動檢查,而Low memory killer是定時進行檢查的,它主要是通過進程的OOM_ODJ來判斷進程的優先順序。
五、問:進程保活方案?
答:Android進程的回收策略主要是通過Low memory killer機制來完成的。
1、利用系統廣播拉活,在發生系統事件的時候,系統會發出相應的廣播,
詳情查看:http://blog.csdn.NET/sunshinetan/article/details/53126857
2、利用系統Service機制拉活,在Service有一個onStartCommand
推薦博客:http://blog.csdn.net/wulianghuan/article/details/8596467
Android開發的過程中,每次調用startService(Intent)的時候,都會調用該Service對象的onStartCommand(Intent,int,int)方法,然後在onStartCommand方法中做一些處理。然後我們注意到這個函數有一個int的返回值,這篇文章就是簡單地講講int返回值的作用。從Android官方文檔中,我們知道onStartCommand有4種返回值:
START_STICKY:如果service進程被kill掉,保留service的狀態為開始狀態,但不保留遞送的intent對象。隨後系統會嘗試重新創建service,由於服務狀態為開始狀態,所以創建服務後一定會調用onStartCommand
(Intent,int,int)方法。如果在此期間沒有任何啟動命令被傳遞到service,那麼參數Intent將為null。(service因內存不足的情況下,殺死的進程才可以拉活,這里要特別注意,不是所有情況都可以拉活。第一次server被殺死後,會在5秒後拉活,第二次會在10秒後,第三次會在20秒後。之後就不會在拉活。第二種情況是獲得root許可權通過stop停止的,也是無法通過server拉活)
START_NOT_STICKY:「非粘性的」。使用這個返回值時,如果在執行完onStartCommand後,服務被異常kill掉,系統將會把它置為started狀態,系統不會自動重啟該服務,直到startService(Intent intent)方法再次被用;。
START_REDELIVER_INTENT:重傳Intent。使用這個返回值時,如果在執行完onStartCommand後,服務被異常kill掉,系統會自動重啟該服務,並將Intent的值傳入。
START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保證服務被kill後一定能重啟。
3、利用Native進程拉活,
4、利用JobScheler機制拉活:Android5.0之後提供的一個機制,他會監聽主進程的存活,如果死掉就會激活拉活進程。
5、利用賬號同步機制拉活:android系統有一個賬戶系統,設置一個自己的賬戶,android會定期喚醒賬戶更新服務。我們可以自己設定同步的事件間隔,且發起更新的是系統,不會受到任何限制。需要在 AndroidManifest 中定義賬號授權與同步服務。
Android 版本(Android N)中系統對賬戶同步這里做了變動,該方法不再有效。
缺點:
a.用戶會在系統設置的賬戶列表裡面看到一個不認識的賬戶;
b.同步的事件間隔是有限制的,最短1分鍾,見源碼,如果小雨60秒,置為60秒;
c.用戶可以卸載賬戶;
d.必須聯網!google提供這個組件是讓你同步賬戶信息,不聯網就不能保活!
⑦ 關機後電腦緩存中數據信息還存在嗎
正常關機後(涵蓋正常關閉所有軟體後再關機),緩存數據不存在
非正常關機(停電等)某些程序的緩存數據還在,例如你編輯的word文檔,你再次打開時會提示你是恢復到上次打開的數據還是新數據。
原則上,非正常關機後緩存數據丟失。
⑧ 計算機緩存會向主存傳遞信息嗎
計算機緩存會向主存傳遞信息。
緩存是指可以進行高速數據交換的存儲器,它先於內存與CPU交換數據,因此速率很快。緩存只是內存中少部分數據的復製品,所以CPU到緩存中尋找數據時,也會出現找不到的情況(因為這些數據沒有從內存復制到緩存中去),這時CPU還是會到內存中去找數據,這樣系統的速率就慢下來了,不過CPU會把這些數據復制到緩存中去,以便下一次不要再到內存中去取。
