Android为TV端助力 清除本应用里的各种数据的方法
public class DataCleanManager {
	/** 
     * * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) * * 
     *  
     * @param context 
     */  
    public static void cleanInternalCache(Context context) {  
        deleteFilesByDirectory(context.getCacheDir());  
    }
/** 
     * * 清除本应用所有数据库(/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"));  
    }
/** 
     * * 按名字清除本应用数据库 * * 
     *  
     * @param context 
     * @param dbName 
     */  
    public static void cleanDatabaseByName(Context context, String dbName) {  
        context.deleteDatabase(dbName);  
    }
/** 
     * * 清除/data/data/com.xxx.xxx/files下的内容 * * 
     *  
     * @param context 
     */  
    public static void cleanFiles(Context context) {  
        deleteFilesByDirectory(context.getFilesDir());  
    }
/** 
     * * 清除外部cache下的内容(/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));  
    }
/** 
     * * 清除本应用所有的数据 * * 
     *  
     * @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/ 目录,一般放一些长时间保存的数据  
    //Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据  
    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(1, BigDecimal.ROUND_HALF_UP)  
                    .toPlainString() + "KB";  
        }
double gigaByte = megaByte / 1024;  
        if (gigaByte < 1) {  
            BigDecimal result2 = new BigDecimal(Double.toString(megaByte));  
            return result2.setScale(1, BigDecimal.ROUND_HALF_UP)  
                    .toPlainString() + "MB";  
        }
double teraBytes = gigaByte / 1024;  
        if (teraBytes < 1) {  
            BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));  
            return result3.setScale(1, BigDecimal.ROUND_HALF_UP)  
                    .toPlainString() + "GB";  
        }  
        BigDecimal result4 = new BigDecimal(teraBytes);  
        return result4.setScale(1, BigDecimal.ROUND_HALF_UP).toPlainString()  
                + "TB";  
    }
public static String getCacheSize(File file) throws Exception {  
        return getFormatSize(getFolderSize(file));  
    }
Android为TV端助力 清除本应用里的各种数据的方法的更多相关文章
- android清除本应用里的各种数据的方法
		public class DataCleanManager { /** * * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) * * * * @param conte ... 
- Android为TV端助力 doc里面adb连接出现问题的解决方法
		第一保证连接的两边都是有网的 第二 就是网上常说的1.adb kill-server 2.adb start-server 3.adb remount 但是在运行adb remount有可能会提示 ... 
- Android为TV端助力 listview与recyclerview上下联动
		首先是主布局fragment里面的xml文件 <?xml version="1.0" encoding="utf-8"?><RelativeL ... 
- Android为TV端助力之热修复原理
		通过源码我们知道Android加载类是通过ClassLoad类里面的findClass先去查找的,如下图所示 通过看源码我们知道,ClassLoad是一个抽象类,它本身并没有实现findclass() ... 
- Android为TV端助力 转载:RecyclerView分页加载
		package com.android.ryane.pulltoloaddata_recyclerview; import android.os.Handler;import android.os.L ... 
- Android为TV端助力 外挂字幕(设置颜色,大小,位置,微调字幕)
		前提摘要: 可以给电影加字幕,目前支持srt和ass格式, 功能摘要: 支持微调字幕,设置大小,颜色,位置 1 .字幕解析类 package com.hhzt.iptv.lvb_x.utils; ... 
- Android为TV端助力(转载)
		作者地址http://www.jianshu.com/u/63915ef020e2 针对Android Tv的自定义RecyclerView 作者 wenju_song 关注 2016.12.09 1 ... 
- Android为TV端助力 不需要Socket的跨进程推送消息AIDL!
		上篇介绍了跨进程实时通讯http://www.cnblogs.com/xiaoxiaing/p/5818161.html 但是他有个缺点就是服务端无法推送消息给客户端,今天这篇文章主要说的就是服务器推 ... 
- Android为TV端助力之Webview与JS双向交互
		package com.hhzt.iptv.adservice; import android.app.Activity;import android.graphics.Bitmap;import a ... 
随机推荐
- Python中的注释和解注释
			注释 目标 注释的作用 单行注释(行注释) 多行注释(块注释) 01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# ... 
- python之获取当前操作系统(平台)
			Python在不同环境平台使用时,需要判断当前是什么系统,比如常用的windows,linux等 下面介绍一些能够获取当前系统的命令 1.使用sys.platform获取 #!/usr/bin/env ... 
- App 性能相关
			51Testing系列丛书:性能测试学习笔记之 LoadRunner实战 http://www.51testing.com/html/38/n-3723938.html 
- 我对java String的理解 及 源码浅析
			摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 每天起床告诉自己,自己的目标是 ”技术 + 英语 还有生活“! ... 
- Unity中控制天空盒移动的解决办法
			为了使天空盒更真实,需要控制天空盒动态旋转. 网上找到的方法是: float num = RenderSettings.skybox.GetFloat("_Rotation"); ... 
- mysql中主键和唯一键的区别
			区别项 primary key(主键) unique(唯一键约束) 唯一性 可以 可以 是否可以为空 不可以 可以 允许个数 只能有1个 允许多个 是否允许多列组合 允许 允许 
- [机器学习]回归--Polinomial Regression 多项式回归
			首先我们需要明确一个概念,我们讨论的线性或者非线性针对的是自变量的系数,而非自变量本身,所以这样的话不管自变量如何变化,自变量的系数如果符合线性我们就说这是线性的.所以这里我们也就可以描述一下多项式线 ... 
- python三大神器之virtualenv
			virtualenv virtualenv用来管理python项目环境,隔离出一个只属于这个项目的虚拟python环境(windows和Linux用法一样). 首先你需要安装virtualenv模块 ... 
- Spark提高篇——RDD/DataSet/DataFrame(二)
			该部分分为两篇,分别介绍RDD与Dataset/DataFrame: 一.RDD 二.DataSet/DataFrame 该篇主要介绍DataSet与DataFrame. 一.生成DataFrame ... 
- ORA-00257 archiver error的处理
			ORA-00257 archiver error的处理 检查flash recovery area的使用情况 SQL> set linesize 100 SQL> col paramete ... 
