Android開(kāi)發(fā)實(shí)現(xiàn)的內(nèi)存管理工具類
本文實(shí)例講述了Android開(kāi)發(fā)實(shí)現(xiàn)的內(nèi)存管理工具類。分享給大家供大家參考,具體如下:
/***********************************************
* 內(nèi)存管理工具
*
* @author chen.lin
* @version 1.0
************************************************/
public class MemoryManager {
private static final String TAG = "MemoryManager";
private static final int MAXMEMORY=300*1024*1024;//程序運(yùn)行的最大內(nèi)存 模擬器(0-16m)
/**
* 判斷系統(tǒng)是否在低內(nèi)存下運(yùn)行
* @param context
* @return
*/
public static boolean hasAcailMemory() {
// 獲取手機(jī)內(nèi)部空間大小
long memory = getAvailableInternalMemorySize();
Log.i(TAG, memory+"");
if (memory < MAXMEMORY) {
//應(yīng)用將處于低內(nèi)存狀態(tài)下運(yùn)行
return false;
} else {
return true;
}
}
/**
* 獲取手機(jī)內(nèi)部可用空間大小
*
* @return
*/
@SuppressWarnings("deprecation")
public static long getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();// 獲取 Android 數(shù)據(jù)目錄
StatFs stat = new StatFs(path.getPath());// 一個(gè)模擬linux的df命令的一個(gè)類,獲得SD卡和手機(jī)內(nèi)存的使用情況
long blockSize = stat.getBlockSize();// 返回 Int ,大小,以字節(jié)為單位,一個(gè)文件系統(tǒng)
long availableBlocks = stat.getAvailableBlocks();// 返回 Int ,獲取當(dāng)前可用的存儲(chǔ)空間
return availableBlocks * blockSize;
}
/**
* 獲取手機(jī)內(nèi)部空間大小
*
* @return
*/
@SuppressWarnings("deprecation")
public static long getTotalInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();// 獲取該區(qū)域可用的文件系統(tǒng)數(shù)
return totalBlocks * blockSize;
}
/**
* 獲取手機(jī)外部可用空間大小
*
* @return
*/
@SuppressWarnings("deprecation")
public static long getAvailableExternalMemorySize() {
if (externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
} else {
throw new RuntimeException("Don't have sdcard.");
}
}
/**
* 獲取手機(jī)外部空間大小
*
* @return
*/
@SuppressWarnings("deprecation")
public static long getTotalExternalMemorySize() {
if (externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();// 獲取外部存儲(chǔ)目錄即 SDCard
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
} else {
throw new RuntimeException("Don't have sdcard.");
}
}
/**
* 外部存儲(chǔ)是否可用
*
* @return
*/
public static boolean externalMemoryAvailable() {
return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}
}
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開(kāi)發(fā)之內(nèi)存與緩存技巧總結(jié)》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
Android簡(jiǎn)單記錄和恢復(fù)ListView滾動(dòng)位置的方法
這篇文章主要介紹了Android簡(jiǎn)單記錄和恢復(fù)ListView滾動(dòng)位置的方法,涉及Android針對(duì)ListView位置屬性的相關(guān)操作技巧,需要的朋友可以參考下2016-08-08
Android模仿知乎的回答詳情頁(yè)的動(dòng)畫(huà)效果
這篇文章主要介紹了Android模仿“知乎”的回答詳情頁(yè)的動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02
Android項(xiàng)目實(shí)戰(zhàn)之ListView懸浮頭部展現(xiàn)效果實(shí)現(xiàn)
這篇文章主要給大家介紹了Android項(xiàng)目實(shí)戰(zhàn)之ListView懸浮頭部展現(xiàn)效果實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
android 檢查網(wǎng)絡(luò)連接狀態(tài)實(shí)現(xiàn)步驟
android 如何檢查網(wǎng)絡(luò)連接狀態(tài),是android開(kāi)發(fā)中一個(gè)常見(jiàn)的問(wèn)題,本文將介紹如何實(shí)現(xiàn),需要的朋友可以參考下2012-12-12
Flutter中嵌入Android 原生TextView實(shí)例教程
這篇文章主要給大家介紹了關(guān)于Flutter中嵌入Android 原生TextView的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Flutter快速制作一個(gè)水印組件實(shí)例詳解
這篇文章主要為大家介紹了Flutter快速制作一個(gè)水印組件實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
JSON中optString和getString方法的區(qū)別
optString方法會(huì)在對(duì)應(yīng)的key中的值不存在的時(shí)候返回一個(gè)空字符串,但是getString會(huì)拋一個(gè)JSONException 。下面通過(guò)一段代碼給大家介紹JSON中optString和getString方法的區(qū)別,感興趣的朋友一起看看吧2017-07-07
Android RxJava異步數(shù)據(jù)處理庫(kù)使用詳解
RxJava是一種異步數(shù)據(jù)處理庫(kù),也是一種擴(kuò)展的觀察者模式。對(duì)于Android開(kāi)發(fā)者來(lái)說(shuō),使用RxJava時(shí)也會(huì)搭配RxAndroid,它是RxJava針對(duì)Android平臺(tái)的一個(gè)擴(kuò)展,用于Android 開(kāi)發(fā),它提供了響應(yīng)式擴(kuò)展組件,使用RxAndroid的調(diào)度器可以解決Android多線程問(wèn)題2022-11-11

