日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術(shù) > Android開發(fā)記錄20-獲取緩存大小和清除緩存功能

Android開發(fā)記錄20-獲取緩存大小和清除緩存功能

來源:程序員人生   發(fā)布時間:2015-02-07 09:12:11 閱讀次數(shù):6822次

Android開發(fā)記錄20-獲得緩存大小和清除緩存功能


轉(zhuǎn)載請注明:IT_xiao小巫 

博客地址:http://blog.csdn.net/wwj_748

前言

本篇博客要給大家分享的如何獲得利用緩存的大小和清除緩存的功能,我們知道我們利用當中常常會產(chǎn)生1些數(shù)據(jù),比如圖片的緩存,數(shù)據(jù)庫文件,配置文件等等。我們開發(fā)產(chǎn)品的時候,可能會有這樣的1個需求清除利用內(nèi)緩存的數(shù)據(jù),可讓用戶選擇刪除利用內(nèi)產(chǎn)生的數(shù)據(jù),這也是比較人性化的設(shè)計點。例如筆者參與開發(fā)的1款產(chǎn)品的設(shè)置界面就提供了清除緩存的功能,以下圖所示:


在貼1大段代碼之前,先普及Android的相干知識點:

先看360手機助手的1張圖:


從上面這張圖,我們可以看到這部手機有

系統(tǒng)文件(注:這個是系統(tǒng)的文件系統(tǒng),不允許修改的)

內(nèi)置SD卡(注:現(xiàn)在的手機基本上都有,就是我們所謂的ROM,是不可以移除的,RAM是我們手機的運行內(nèi)存)

外置SD卡(注:這個就是我們的SD卡了,可以移除)

我們來斟酌1個問題我們利用內(nèi)的緩存數(shù)據(jù)寄存在哪里?

我們的利用程序1般會產(chǎn)生以下幾種類型的數(shù)據(jù):

file-普通的文件存儲

database-數(shù)據(jù)庫文件(.db文件)

sharedPreference-配置數(shù)據(jù)(.xml文件)

cache-圖片緩存文件


利用內(nèi)數(shù)據(jù)的所有路徑:

/data/data/com.xxx.xxx/cache - 利用內(nèi)緩存(注:對應(yīng)方法getCacheDir())

/data/data/com.xxx.xxx/databases - 利用內(nèi)數(shù)據(jù)庫

/data/data/com.xxx.xxx/shared_prefs - 利用內(nèi)配置文件

/data/data/com.xxx.xxx/files - 利用內(nèi)文件(注:對應(yīng)方法getFilesDir())


1種情況,我們沒有外置SD卡,那末我們安裝的利用安裝在哪里?自然是手機中的內(nèi)置SD卡里,具體路徑是這樣的:


那在Android是用甚么方法來獲得這個路徑的:


如果我們手機有外置SD卡,我們也能夠把利用安裝在SD卡,但移除SD卡以后就不能使用了。



不論是內(nèi)置還是外置SD卡,獲得路徑的方法是1樣:

獲得SD卡根目錄:Environment.getExternalStorageDirectory().getAbsolutePath();

外部Cache路徑:/mnt/sdcard/android/data/com.xxx.xxx/cache 1般存儲緩存數(shù)據(jù)(注:通過getExternalCacheDir()獲得)

外部File路徑:/mnt/sdcard/android/data/com.xxx.xxx/files 存儲長時間存在的數(shù)據(jù) (注:通過getExternalFilesDir(String type)獲得, type為特定類型,可以是以下任何1種

Environment.DIRECTORY_MUSIC, Environment.DIRECTORY_PODCASTS, Environment.DIRECTORY_RINGTONES, Environment.DIRECTORY_ALARMS, Environment.DIRECTORY_NOTIFICATIONS, Environment.DIRECTORY_PICTURES, or Environment.DIRECTORY_MOVIES. )


最后提供1個工具類:

DataCleanManager.java

package com.infzm.daily.know.utils; /* * 文 件 名: DataCleanManager.java * * 描 述: 主要功能有清除內(nèi)/外緩存,清除數(shù)據(jù)庫,清除sharedPreference,清除files和清除自定義目錄 * */ import java.io.File; import java.math.BigDecimal; import android.content.Context; import android.os.Environment; import android.text.TextUtils; /** * 本利用數(shù)據(jù)清除管理器 */ public class DataCleanManager { /** * * 清除本利用內(nèi)部緩存(/data/data/com.xxx.xxx/cache) * * * * @param context */ public static void cleanInternalCache(Context context) { deleteFilesByDirectory(context.getCacheDir()); } /** * * 清除本利用所有數(shù)據(jù)庫(/data/data/com.xxx.xxx/databases) * * * * @param context */ public static void cleanDatabases(Context context) { deleteFilesByDirectory(new File("/data/data/" + context.getPackageName() + "/databases")); } /** * * 清除本利用SharedPreference(/data/data/com.xxx.xxx/shared_prefs) * * * @param context */ public static void cleanSharedPreference(Context context) { deleteFilesByDirectory(new File("/data/data/" + context.getPackageName() + "/shared_prefs")); } /** * * 按名字清除本利用數(shù)據(jù)庫 * * * * @param context * @param dbName */ public static void cleanDatabaseByName(Context context, String dbName) { context.deleteDatabase(dbName); } /** * * 清除/data/data/com.xxx.xxx/files下的內(nèi)容 * * * * @param context */ public static void cleanFiles(Context context) { deleteFilesByDirectory(context.getFilesDir()); } /** * * 清除外部cache下的內(nèi)容(/mnt/sdcard/android/data/com.xxx.xxx/cache) * * @param context */ public static void cleanExternalCache(Context context) { if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { deleteFilesByDirectory(context.getExternalCacheDir()); } } /** * * 清除自定義路徑下的文件,使用需謹慎,請不要誤刪。而且只支持目錄下的文件刪除 * * * * @param filePath * */ public static void cleanCustomCache(String filePath) { deleteFilesByDirectory(new File(filePath)); } /** * * 清除本利用所有的數(shù)據(jù) * * * * @param context * @param filepath */ public static void cleanApplicationData(Context context, String... filepath) { cleanInternalCache(context); cleanExternalCache(context); cleanDatabases(context); cleanSharedPreference(context); cleanFiles(context); if (filepath == null) { return; } for (String filePath : filepath) { cleanCustomCache(filePath); } } /** * * 刪除方法 這里只會刪除某個文件夾下的文件,如果傳入的directory是個文件,將不做處理 * * * * @param directory */ private static void deleteFilesByDirectory(File directory) { if (directory != null && directory.exists() && directory.isDirectory()) { for (File item : directory.listFiles()) { item.delete(); } } } // 獲得文件 //Context.getExternalFilesDir() --> SDCard/Android/data/你的利用的包名/files/ 目錄,1般放1些長時間保存的數(shù)據(jù) //Context.getExternalCacheDir() --> SDCard/Android/data/你的利用包名/cache/目錄,1般寄存臨時緩存數(shù)據(jù) public static long getFolderSize(File file) throws Exception { long size = 0; try { File[] fileList = file.listFiles(); for (int i = 0; i < fileList.length; i++) { // 如果下面還有文件 if (fileList[i].isDirectory()) { size = size + getFolderSize(fileList[i]); } else { size = size + fileList[i].length(); } } } catch (Exception e) { e.printStackTrace(); } return size; } /** * 刪除指定目錄下文件及目錄 * * @param deleteThisPath * @param filepath * @return */ public static void deleteFolderFile(String filePath, boolean deleteThisPath) { if (!TextUtils.isEmpty(filePath)) { try { File file = new File(filePath); if (file.isDirectory()) {// 如果下面還有文件 File files[] = file.listFiles(); for (int i = 0; i < files.length; i++) { deleteFolderFile(files[i].getAbsolutePath(), true); } } if (deleteThisPath) { if (!file.isDirectory()) {// 如果是文件,刪除 file.delete(); } else {// 目錄 if (file.listFiles().length == 0) {// 目錄下沒有文件或目錄,刪除 file.delete(); } } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * 格式化單位 * * @param size * @return */ public static String getFormatSize(double size) { double kiloByte = size / 1024; if (kiloByte < 1) { return size + "Byte"; } double megaByte = kiloByte / 1024; if (megaByte < 1) { BigDecimal result1 = new BigDecimal(Double.toString(kiloByte)); return result1.setScale(2, BigDecimal.ROUND_HALF_UP) .toPlainString() + "KB"; } double gigaByte = megaByte / 1024; if (gigaByte < 1) { BigDecimal result2 = new BigDecimal(Double.toString(megaByte)); return result2.setScale(2, BigDecimal.ROUND_HALF_UP) .toPlainString() + "MB"; } double teraBytes = gigaByte / 1024; if (teraBytes < 1) { BigDecimal result3 = new BigDecimal(Double.toString(gigaByte)); return result3.setScale(2, BigDecimal.ROUND_HALF_UP) .toPlainString() + "GB"; } BigDecimal result4 = new BigDecimal(teraBytes); return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB"; } public static String getCacheSize(File file) throws Exception { return getFormatSize(getFolderSize(file)); } }

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久综合国产 | 一级片久久 | 久综合网 | 欧美激情综合五月色丁香小说 | 久久久久久精 | av成人在线播放 | 天天爱综合 | 国产成人久久精品 | 亚洲www视频| 91精品国产综合久久久久久久久久 | 99成人 | 国产成人精品久久二区二区91 | 不卡在线一区 | www.四虎.com | 国产精品178页 | 一区二区三区av | 精品国产三级 | 国产日韩欧美一区二区三区乱码 | 伊人伊成久久人综合网站 | 午夜第一页 | 亚洲第一福利视频 | 亚洲免费a | 国产美女视频网站 | 亚洲福利在线观看 | 亚洲精品123区 | 国产成人在线一区 | 一区二区久久久 | 99久久久无码国产精品 | 国产1区2区在线观看 | 97人人草| 国产午夜精品久久久 | 亚洲一区二区av | 91在线一区二区 | 中文日韩在线 | 亚洲精品aⅴ中文字幕乱码 97视频免费在线 | 久久精品99 | 久久久精品中文字幕 | 日韩欧美在线观看视频网站 | 亚洲欧美在线一区 | 香蕉av777xxx色综合一区 | 亚洲综合一区二区 |