Android——内存篇:清除当前app缓存

不废话,直接上代码:

一、缓存工具类:

package com.hzzx.meiz.utils;

import android.content.Context;
import android.os.Environment;

import java.io.File;
import java.math.BigDecimal;

/**
 * 缓存工具类
 */
public class CaCheUtil {

    public static CaCheUtil caCheUtil;

    private Context context;

    public static CaCheUtil getInstance(Context context) {
        if (caCheUtil == null) {
            synchronized (CaCheUtil.class) {
                if (caCheUtil == null)
                    caCheUtil = new CaCheUtil(context);
            }
        }
        return caCheUtil;
    }

    public CaCheUtil(Context context) {
        this.context = context.getApplicationContext();
    }


    /**
     * 获取当前app缓存大小
     *
     * @return
     * @throws Exception
     */
    public String getTotalCacheSize() throws Exception {
        long cacheSize = getFolderSize(context.getCacheDir());
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            cacheSize += getFolderSize(context.getExternalCacheDir());
        }
        return getFormatSize(cacheSize);
    }

    /**
     * 清除所有缓存
     */
    public void clearAllCache() {
        deleteDir(context.getCacheDir());
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            deleteDir(context.getExternalCacheDir());
        }
    }

    /**
     * 删除目录
     *
     * @param dir
     * @return
     */
    public boolean deleteDir(File dir) {
        if (dir != null && dir.isDirectory()) {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        return dir.delete();
    }


    /**
     * 获取缓存目录的大小
     *
     * @param file
     * @return
     * @throws Exception
     */
    public 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 size
     */
    public 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";
    }

}
二、缓存工具类CaCheUtil的使用:

SettingActivity中清理缓存功能:

package com.hzzx.meiz.activity.mine;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.TextView;

import com.hzzx.meiz.R;
import com.hzzx.meiz.base.MyBaseTwoActivity;
import com.hzzx.meiz.utils.CaCheUtil;

import butterknife.BindView;
import butterknife.OnClick;

/**
 * 设置
 */
public class SettingActivity extends MyBaseTwoActivity {

    
    @BindView(R.id.ll_cache_clear)
    LinearLayout llCacheClear;

    @BindView(R.id.tv_cache_clear_str)
    TextView tvCaCheClearStr;

    //清理成功标识
    private final int CLEAR_TAG_SUCCESS = 0;
    //是否需要清理
    private boolean isClear;


    private Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            switch (msg.what) {
                case 0:
                    showShortMsg("清理完成");
                    tvCaCheClearStr.setText("0KB");
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting);

        setToolBarTitle("设置");
        initView();
    }

    public void initView() {
        String cache;
        try {
            cache = CaCheUtil.getInstance(SettingActivity.this).getTotalCacheSize();
            if (cache.startsWith("0")) {
                tvCaCheClearStr.setText("0KB");
                isClear = false;
            } else {
                tvCaCheClearStr.setText(cache);
                isClear = true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 缓存清理
     */
    @OnClick(R.id.ll_cache_clear)
    public void doCacheClear() {
        try {
            if (isClear) {
                showClearDialog();
            } else {
                showShortMsg("暂无缓存,不需要清理");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 显示清除弹窗
     */
    private void showClearDialog() {
        new AlertDialog.Builder(this)
                .setTitle("清理缓存")
                .setMessage("确认要清除缓存吗?")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //        清理缓存
                        new Thread(new ClearCache()).start();
                    }
                })
                .setNegativeButton("取消", null)
                .show();
    }

    /**
     * 清除缓存
     */
    private class ClearCache implements Runnable {
        @Override
        public void run() {
            try {
                CaCheUtil.getInstance(SettingActivity.this).clearAllCache();
                Thread.sleep(1500);
                if (CaCheUtil.getInstance(SettingActivity.this).getTotalCacheSize().startsWith("0")) {
                    handler.sendEmptyMessage(CLEAR_TAG_SUCCESS);
                    isClear = false;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}


注意你的基带版本需要是MDC或者MDL一,准备材料:1,电脑安装Microsoft .NET Framework 4.5,点我2,下载三星驱动,点我3,下载解锁软件,点我下载4,下载安装DFS,点我下载5,全部安装好上面的软件在电脑6,MDC版本基带下载:点我下载二,降级基带为MDC版本1,下载odin:odin_V3.0.7.zip2,解压并且打开odin软件3,手机L720彻底关机(拔掉UIM卡,SIM卡)5,按住音量下+主页键+电源键进入警告的英文页面6,看到警告之后,按一下音量上键,进入了Downloading....下载模式,也就是挖煤模式或者说odin刷机模式。连上电脑数据线(台式电脑连后面的USB接口,网吧电脑一般被阉割了,是太监,不行)7,odin软件上点击PHONE,选择SPH-L720_MDC_Modem.tar.md5基带文件8,等待1分钟左右MD5验9,点击start,开始刷机三,破解电信插卡3G1,手机在拨号界面输入*#0808# (或者拨号##3424#),上面选择AP 下面选择MODEM+ADB+DM2,下载SPCUtility.apk 这个软件安装在手机3,手机连接WiFi或者网络,打开SPCUtility.apk这个软件,read 读取即可出SPC4,手机连接电脑数据线5,打开桌面的DFS软件6,连接三星端口7,输入PWD密码为2012112120131219 8,SPC密码是上面第2.3步骤获取到的6位数字 9,默认是写号,改为RuimOnly 读UIM卡模式 10,写电信的3G接口照图写ctwap@mycdma.cnvnet.mobi 11,写SimpleIP 12,写完上面的参数,关闭DFS。不要断开手机,也不用拔掉数据线。接着做下面的步骤四四,破解三网识别:1,打开桌面的S4 Flasher软件,点击scan and unlock,然后等待手机重启,就完成解锁三网了。到此完美三网插卡。2手机享受三网插卡吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值