android缓存清理代码,安卓缓存清除和计算

官方提供的方法中,计算缓存和清除缓存 貌似对安卓系统没有效果,以下是采用原生安卓提供的方法,供有需要的同学参考,自己只有一台魅族手机,不知在其他机型上是否通用。

以下是代码:

var Intent = null,

File = null,

Uri = null,

main = null;

var cacheCaleState=false;

var os=null;

mui.plusReady(function() {

os=plus.os.name;

if(os == "Android") {

main = plus.android.runtimeMainActivity();

Intent = plus.android.importClass("android.content.Intent");

File = plus.android.importClass("java.io.File");

Uri = plus.android.importClass("android.net.Uri");

}

initCacheSize();

cacheDom.addEventListener('tap', function() {

plus.nativeUI.confirm("确定清除缓存? 清除后App中的数据将会被清理,用户需重新登录", function(e) {

if(e.index == 0) {

console.log("cacheCaleState:"+cacheCaleState);

if(os=="Android"){

if(cacheCaleState==true){

clearAllCache();

}else{

mui.toast("缓存计算中……");

}

}else if(os=="iOS"){

clearCache(function(){

//再次计算缓存大小

initCacheSize();

});

}

}

}, "新消息通知", ["确定", "取消"]);

}, false);

});

以下是方法体 计算缓存大小

function initCacheSize (){

var formatedSize;

if(os=="Android"){

formatedSize=formatSize(calcCache4Android());

cacheCaleState=true;

cacheDomChild.innerHTML="清除缓存" + formatedSize + "";

}else if(os=="iOS"){

calcCache(function(size) {

cacheCaleState=true;

formatedSize=formatSize(size);

cacheDomChild.innerHTML="清除缓存" + formatedSize + "";

});

}else{

mui.toast("未知的设备类型,无法计算缓存");

cacheCaleState=false;

}

}

/**

* 计算缓存大小 官方提供方法,用于iOS

*/

function calcCache(callback) {

console.log("开始计算缓存大小");

var finalSize = -1;

plus.cache.calculate(function(size) {

console.log(size + "byte");

var sizeInt = parseInt(size);

console.log("sizeInt" + sizeInt);

return callback(finalSize);

});

}

function calcCache4Android() {

var cacheSize=0;

console.log("start calc android");

var sdRoot = main.getCacheDir();

var files = plus.android.invoke(sdRoot,"listFiles");

cacheSize += getFolderSize(files);

console.log("android size-->"+cacheSize);

return cacheSize;

}

function getFolderSize(files) {

var size = 0;

var len = files.length;

for(var i = 0; i < len; i++) {

// 如果下面还有文件

if(files[i].isDirectory()) {

size = size + getFolderSize(files[i]);

} else if(!files[i].isHidden()){

size = size + files[i].length();

}

}

return size;

}

function formatSize(size){

var fileSizeString;

size=parseInt(size);

console.log("我是size"+size);

if(size == 0){

fileSizeString = "0B";

}else if(size < 1024){

fileSizeString = size + "B";

}else if(size < 1048576){

fileSizeString = (size/1024).toFixed(2) + "KB";

}else if (size < 1073741824){

console.log("Mb"+size);

fileSizeString = (size/1048576).toFixed(2) + "MB";

console.log("/ after"+fileSizeString);

}else{

fileSizeString = (size/1073741824).toFixed(2) + "GB";

}

return fileSizeString;

}

以下是删除缓存的方法

/**

* 清除缓存

*/

function clearCache(callback) {

plus.storage.clear();

plus.cache.clear(function() {

console.log("清除了~~~return");

return callback();

});

}

function clearAllCache4Android(){

console.log("清理所有缓存");

console.log("main"+main.getCacheDir());

var sdRoot = main.getCacheDir();

var files = plus.android.invoke(sdRoot,"listFiles");

deleteDir(files);

//再次计算缓存大小

initCacheSize();

}

function deleteDir(files){

var len = files.length;

console.log("len:"+len);

for(var i = 0; i < len; i++) {

console.log("delete file dir:"+files[i]);

files[i].delete();

}

}

方法名比较直观,就没有一一注释了。

0442af1acb68101a1e7bb4887e7ff8ce.png

79c36e986493a81d66b54a345f7b1003.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值