1. 程式人生 > >安卓記憶體獲取的常用方式(命令列||程式碼)

安卓記憶體獲取的常用方式(命令列||程式碼)

安卓記憶體獲取的常用方式(這是為下一章“仿360懸浮視窗”做準備的)

方式一、用過linux的都知道有這樣一行命令:cat /proc/meminfo 查詢記憶體使用詳情檔案(查詢CPU使用詳情檔案:cat / proc/cpuinfo),查詢結果如圖:
如果你需要查詢的是手機的記憶體,只要在cat命令前 加 adb shell即可 方式二:既然命令列可以開啟檔案,那麼我們自然能夠想到通過讀取檔案流的方式獲取:
public static String getUsedPercentValue(Context context) {
		//記憶體資訊檔案(CPU資訊檔案:/proc/cpuinfo)
		String dir = "/proc/meminfo";
		try {
			FileReader fr = new FileReader(dir);
			//建立讀取字元流快取區
			BufferedReader br = new BufferedReader(fr, 2048);
			//讀取第一行字元
			String memoryLine = br.readLine();
			String subMemoryLine = memoryLine.substring(memoryLine.indexOf("MemTotal:"));
			memoryLine = br.readLine();
			String availableMemoryLine = memoryLine.substring(memoryLine.indexOf("MemFree:"));
			br.close();
			//獲取總的記憶體,這裡需要注意的是replaceAll支援正則表示式"\\D"代表所有的字母字元,只保留數字部分
			long totalMemorySize = Integer.parseInt(subMemoryLine.replaceAll("\\D+", ""));
			//獲取當前可用記憶體
			long availableSize = Integer.parseInt(availableMemoryLine.replaceAll("\\D+", ""));
			int percent = (int) ((totalMemorySize - availableSize) / (float) totalMemorySize * 100);
			return percent + "%";
		} catch (IOException e) {
			e.printStackTrace();
		}
		return "懸浮窗";
	}
第三種:我們可以通過MemoryInfo獲取(遺憾的是這裡只能獲取到剩餘記憶體):
	/**
	 * 獲取當前可用記憶體,返回資料以位元組為單位。
	 *
	 * @param context 可傳入應用程式上下文。
	 * @return  當前可用記憶體。
	 */
	private static long getAvailableMemory(Context context) {
		ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo();
		getActivityManager(context).getMemoryInfo(info);
		long availableSize = info.availMem;
		return availableSize;
	}<pre name="code" class="java">      /**
	 *
	 * @param context 可傳入應用程式上下文。
	 * @return ActivityManager的例項,用於獲取手機可用記憶體。
	 */
	private static ActivityManager getActivityManager(Context context) {
		if (mActivityManager == null) {
			mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
		}
		return mActivityManager;
	}

注意:我們這裡指的記憶體是RAM(執行記憶體)!

相關推薦

記憶體獲取常用方式命令||程式碼

安卓記憶體獲取的常用方式(這是為下一章“仿360懸浮視窗”做準備的) 方式一、用過linux的都知道有這樣一行命令:cat /proc/meminfo 查詢記憶體使用詳情檔案(查詢CPU使用詳情檔案:

自學筆記第一彈有點凌亂QAQ

安卓學習筆記 第一章: (1):HelloWorld 1.分析安卓專案結構: 主要開發工作在app目錄下進行(在此主要記錄此目錄); bulid:包含編譯時自動生成的檔案 libs:如果使用第三方jar包,需放在該目錄下,其會自動新增到構建路勁中去 andro

應用保活實踐雙程序守護

         研究安卓應用保活黑科技已經有一段時間了,其實很多都是看看文章,部落格,看完就忘了,今天休息,在家寫寫Demo,研究一下,跟大家分享。 學習資料:http://www.oschina.

ubuntu16.04 安裝opencv3.4.3以及opencv_contrib命令形式

通過命令列下載opencv檔案: git clone https://github.com/Itseez/opencv.git git clone https://github.com/Itseez/opencv_contrib.git 安裝依賴項: sudo apt-get install

thinkphp 3.2的cli模式命令模式的正確使用方法

最近要使用thinkphp3.2版本的cli模式,手動執的話沒有問題,比如php /www/index.php home/article/get 這樣沒有問題,但是一般用cli模式都是定時任務比較多,這個時候寫到定時任務的時候,比如 0 * * * * * php /ww

DMA和UART的深刻認識--串列埠接收的3種工作方式附STM32F4程式碼

可能會遇到的問題:1.能實現接收但不傳送 注意是否是識別函數出錯2.DMA單次傳輸模式要求再初始化,否者出現第二次中斷不執行。使用迴圈模式出現的問題是要結合配置公式:3.DMA再次初始化不完全,會出現接收一次成功,再來一次不行。第三次能接收的問題4.串列埠除錯連續點選的次數太

Command Injection命令注入

命令注入漏洞是特別危險的,因為它們允許未經授權的執行作業系統命令,它們的存在,因為應用程式無法正確地驗證和消毒,使用時呼叫shell的功能,如的引數。攻擊者與控制這些引數可以欺騙應用程式執行任何系統命令自己的選擇。為了正確測試命令注入漏洞,應遵循以下步驟:§第1步:瞭解攻

[Git]Git教程之msysgit命令形式

步驟一:在GitHub新建託管專案 1-1. 要託管到github,那你就應該要有一個屬於你自己的github帳號 github官網:https://github.com/ 在位址列輸入地址:github.com 填寫使用者名稱、郵箱、密碼

Mac 擷取一個視訊中部分片段命令方法

蘋果電腦中想要擷取一個視訊中的某一段視訊,參考了百度經驗 開啟命令列,執行以下操作 mkdir bin cd bin touch capture.txt open capture.txt 輸入一下內容: #! /usr/local/bin/python3 im

GitBook製作電子書詳細教程命令

GitBook 是一款基於 Node.js 開發的開源的工具,可以通過命令列的方式建立電子書專案,再使用 MarkDown 編寫電子書內容,然後生成 PDF、ePub、mobi 格式的電子書,或生成一個靜態站點。 除此之外,還可以利用 Git 命令管理電子書版本。如果你

Git庫程式碼統計命令統計

1、檢視兩個版本之間的檔案及程式碼量差異有效程式碼更多是指:純新增的程式碼和修改的程式碼,純刪除的程式碼可忽略不計。實際有效程式碼行數 = 程式碼add的行數git diff --stat v3.2.2 v3.3.0 (按tag號)git diff –stat commit1

Linux命令下載

對於喜歡命令列操作及追求高效率、高速度下載的朋友,推薦使用命令列下載工具。命令列工具不但使用方便,而且大多具有很高的下載速度及下載效率,尤其適合於大批量下載檔案。下面就為大家詳細介紹一下這些工具。     Wget     Wget是一個十分常用命令列下載工具,多數Linu

系統原始碼編譯系列——常用命令

在下載編譯完成安卓原始碼之後,我們在閱讀、除錯、修改安卓原始碼時,可能還需要對原始碼進行一系列操作,如切換分支、重置等,下面我們就來看看如何對原始碼進行一些常用操作。 模組單獨編譯 1.檢視當前可編譯的所有模組名稱 make modules 2.清除指定模組的編譯

應用建立快捷方式的最新操作相容8.0

在安卓8.0以前,如果需要給安卓APP建立快捷方式,需要使用到廣播機制。 而在最新的安卓8.0中,舊的廣播建立快捷方式方式是已經過時甚至失效了的。 而新的快捷方式使用了一個新的類:ShortcutManager,谷歌在拋棄舊機制的同時,在ShortcutManager上加

jmeter獲取響應數據中參數值的常用方式JSON提取器 、正則表達式提取器 、XPath提取器 、Bean Shell PostProcessor

選擇 正則表達 pos alt 正則表達式 格式 processor info 表達 JSON提取器: XPath提取器: 返回數據格式是HTML的時候,選擇使用此種方式。 正則表達式提取器: 圖中Field to check勾選的是Response He

jmeter獲取響應資料中引數值的常用方式JSON提取器 、正則表示式提取器 、XPath提取器 、Bean Shell PostProcessor

 JSON提取器:   XPath提取器: 返回資料格式是HTML的時候,選擇使用此種方式。     正則表示式提取器: 圖中Field to check勾選的是Response Headers,獲取的是請求頭裡的引數值。   B

LocationManager獲取當前地理位置經緯度

1.首先建立LocationManager物件 2呼叫方法得到位置資訊 3.設定監聽,監聽位置變化資訊 程式碼: public class MainActivity extends AppCompatActivity { private TextView tv_jing;

獲取APK的SHA1值Android安裝包SHA1指紋

接入QQ錢包支付的時候,需要獲取這個值,獲取的方法: 1) 將apk修改後綴為 .rar檔案後解壓; 2) 進入解壓後的META-INF目錄,該目錄下會存在檔案CERT.RSA 3) 在該目錄下開啟cmd,輸入命令 :keytool -printcert -file CER

js和app互相傳資料app頁面整合html頁面,獲取資料並給返回資料

先上Demo:<!DOCTYPE html><html><head>    <meta charset="utf-8"></head><body><button onclick="test()"&g

開發筆記——多種方式實現底部選單欄仿微信介面

關於底部選單是什麼,我想沒必要介紹了,在市場上的APP裡太常見了,這裡提供兩種方式來實現。 記得之前寫過幾篇關於底部選單實現的方法,有興趣的朋友可以看看: 今天帶來種相對更通俗易懂的寫法,不再和過去一樣去沿用TabHost了,這次我們直接用LinearLa