Android開發(fā)實現(xiàn)的內(nèi)存管理工具類
本文實例講述了Android開發(fā)實現(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;//程序運行的最大內(nèi)存 模擬器(0-16m)
/**
* 判斷系統(tǒng)是否在低內(nèi)存下運行
* @param context
* @return
*/
public static boolean hasAcailMemory() {
// 獲取手機內(nèi)部空間大小
long memory = getAvailableInternalMemorySize();
Log.i(TAG, memory+"");
if (memory < MAXMEMORY) {
//應(yīng)用將處于低內(nèi)存狀態(tài)下運行
return false;
} else {
return true;
}
}
/**
* 獲取手機內(nèi)部可用空間大小
*
* @return
*/
@SuppressWarnings("deprecation")
public static long getAvailableInternalMemorySize() {
File path = Environment.getDataDirectory();// 獲取 Android 數(shù)據(jù)目錄
StatFs stat = new StatFs(path.getPath());// 一個模擬linux的df命令的一個類,獲得SD卡和手機內(nèi)存的使用情況
long blockSize = stat.getBlockSize();// 返回 Int ,大小,以字節(jié)為單位,一個文件系統(tǒng)
long availableBlocks = stat.getAvailableBlocks();// 返回 Int ,獲取當前可用的存儲空間
return availableBlocks * blockSize;
}
/**
* 獲取手機內(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;
}
/**
* 獲取手機外部可用空間大小
*
* @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.");
}
}
/**
* 獲取手機外部空間大小
*
* @return
*/
@SuppressWarnings("deprecation")
public static long getTotalExternalMemorySize() {
if (externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();// 獲取外部存儲目錄即 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.");
}
}
/**
* 外部存儲是否可用
*
* @return
*/
public static boolean externalMemoryAvailable() {
return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}
}
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)之內(nèi)存與緩存技巧總結(jié)》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android開發(fā)入門與進階教程》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Android開發(fā)中在TableView上添加懸浮按鈕的方法
如果直接在TableVIewController上貼Button的話會導致這個會隨之滾動,下面通過本文給大家分享在TableView上實現(xiàn)位置固定懸浮按鈕的兩種方法,對tableview 懸浮按鈕感興趣的朋友一起學習吧2016-11-11
Android圖像視圖ImageView實現(xiàn)圖像拉伸效果
這篇文章主要為大家詳細介紹了Android圖像視圖ImageView實現(xiàn)圖像拉伸演示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-05-05
Android6.0 storage目錄sd卡存儲的路徑創(chuàng)建詳解
這篇文章主要介紹了Android6.0 storage目錄sd卡存儲的路徑創(chuàng)建的相關(guān)資料,需要的朋友可以參考下2017-01-01
Android自定義Seekbar滑動條 Pop提示跟隨滑動按鈕滑動
這篇文章主要為大家詳細介紹了Android自定義Seekbar滑動條,Pop提示跟隨滑動按鈕滑動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
Android實現(xiàn)可瀏覽和搜索的聯(lián)系人列表
這篇文章主要為大家詳細介紹了Android實現(xiàn)可瀏覽和搜索的聯(lián)系人列表的相關(guān)代碼,瀏覽所有聯(lián)系人和根據(jù)名稱搜索聯(lián)系人,感興趣的小伙伴們可以參考一下2016-07-07
Android中的Intent Filter匹配規(guī)則簡介
這篇文章主要為大家詳細介紹了Android中的Intent Filter匹配規(guī)則,感興趣的小伙伴們可以參考一下2016-04-04
利用Kotlin的協(xié)程實現(xiàn)簡單的異步加載詳解
這篇文章主要給大家介紹了關(guān)于利用Kotlin的協(xié)程實現(xiàn)簡單的異步加載的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-03-03
rxjava+retrofit實現(xiàn)多圖上傳實例代碼
本篇文章主要介紹了rxjava+retrofit實現(xiàn)多圖上傳實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06

