`
龙哥IT
  • 浏览: 254596 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

清除app缓存

 
阅读更多
/**
 * 数据删除工具类
 * @author FireAnt(http://my.oschina.net/LittleDY)
 * @version 创建时间:2014年10月27日 上午10:18:22
 * 
 */
public class DataCleanManager {
	
	/**
	 * 清除本应用内部缓存
	 * (/data/data/com.xxx.xxx/cache)
	 * @param context
	 */
	public static void cleanInternalCache(Context context) {
		deleteFilesByDirectory(context.getCacheDir());
		deleteFilesByDirectory(context.getFilesDir());
	}

	/**
	 * 清楚本应用所有数据库
	 * (/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 filePath
	 */
	public static void cleanCustomCache(File file) {
		deleteFilesByDirectory(file);
	}

	/**
	 * 清除本应用所有的数据
	 * @param context
	 * @param filepath
	 */
	public static void cleanApplicationData(Context context, String... filepath) {
		cleanInternalCache(context);
		cleanExternalCache(context);
		cleanDatabases(context);
		cleanSharedPreference(context);
		cleanFiles(context);
		for (String filePath : filepath) {
			cleanCustomCache(filePath);
		}
	}

	/**
	 * 删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理 
	 * @param directory
	 */
	private static void deleteFilesByDirectory(File directory) {
		if (directory != null && directory.exists() && directory.isDirectory()) {
			for (File child : directory.listFiles()) {
				if (child.isDirectory()) {
					deleteFilesByDirectory(child);
				} 
				child.delete();
			}
		}
	}
}

 

 

 

/**
 * Android各版本的兼容方法
 * @author liux (http://my.oschina.net/liux)
 * @version 1.0
 * @created 2012-8-6
 */
public class MethodsCompat {
	
    @TargetApi(5)
    public static void overridePendingTransition(Activity activity, int enter_anim, int exit_anim) {
       	activity.overridePendingTransition(enter_anim, exit_anim);
    }

    @TargetApi(7)
    public static Bitmap getThumbnail(ContentResolver cr, long origId, int kind, Options options) {
       	return MediaStore.Images.Thumbnails.getThumbnail(cr,origId,kind, options);
    }
    
    @TargetApi(8)
    public static File getExternalCacheDir(Context context) {

//	    // return context.getExternalCacheDir(); API level 8
//
//	    // e.g. "<sdcard>/Android/data/<package_name>/cache/"
//	    final File extCacheDir = new File(Environment.getExternalStorageDirectory(),
//	        "/Android/data/" + context.getApplicationInfo().packageName + "/cache/");
//	    extCacheDir.mkdirs();
//	    return extCacheDir;

        return context.getExternalCacheDir();
    }

    @TargetApi(11)
    public static void recreate(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            activity.recreate();
        }
    }

    @TargetApi(11)
    public static void setLayerType(View view, int layerType, Paint paint) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            view.setLayerType(layerType, paint);
        }
    }

    @TargetApi(14)
    public static void setUiOptions(Window window, int uiOptions) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            window.setUiOptions(uiOptions);
        }
    }
        
}

 

 

 public void setProperties(Properties ps) {
        AppConfig.getAppConfig(this).set(ps);
    }

    public Properties getProperties() {
        return AppConfig.getAppConfig(this).get();
    }

    public void setProperty(String key, String value) {
        AppConfig.getAppConfig(this).set(key, value);
    }

 

 

 /**
     * 清除app缓存
     */
    public void clearAppCache() {
        DataCleanManager.cleanDatabases(this);
        // 清除数据缓存
        DataCleanManager.cleanInternalCache(this);
        // 2.2版本才有将应用缓存转移到sd卡的功能
        if (isMethodsCompat(android.os.Build.VERSION_CODES.FROYO)) {
            DataCleanManager.cleanCustomCache(MethodsCompat
                    .getExternalCacheDir(this));
        }
        // 清除编辑器保存的临时内容
        Properties props = getProperties();
        for (Object key : props.keySet()) {
            String _key = key.toString();
            if (_key.startsWith("temp"))
                removeProperty(_key);
        }
        new KJBitmap().cleanCache();
    }


 /**
     * 判断当前版本是否兼容目标版本的方法
  
   * 
   
  * @param VersionCode
   
  * @return
     
*/
  
  public static boolean isMethodsCompat(int VersionCode) {
  
      int currentVersion = android.os.Build.VERSION.SDK_INT;
      
  return currentVersion >= VersionCode;
   
 }

 

 

 

 /**
     * 获取cookie时传AppConfig.CONF_COOKIE
     * 
     * @param key
     * @return
     */
    public String getProperty(String key) {
        String res = AppConfig.getAppConfig(this).get(key);
        return res;
    }

    public void removeProperty(String... key) {
        AppConfig.getAppConfig(this).remove(key);
    }

 

  public static AppConfig getAppConfig(Context context) {
        if (appConfig == null) {
            appConfig = new AppConfig();
            appConfig.mContext = context;
        }
        return appConfig;
    }

    /**
     * 获取Preference设置
     */
    public static SharedPreferences getSharedPreferences(Context context) {
        return PreferenceManager.getDefaultSharedPreferences(context);
    }

 

分享到:
评论

相关推荐

    Android app缓存清理实现

    Android app缓存清理通常包括以下几个关键步骤: 1. **确定缓存路径**:Android提供了多种类型的缓存,如内部存储的`getCacheDir()`和外部存储的`getExternalCacheDir()`。你需要确定你的应用使用的缓存目录,然后...

    iOS app 清除缓存

    在实际操作中,我们可以创建一个名为“tableView缓存demo”的示例项目,展示如何在UITableView中加载并缓存数据,以及如何在用户选择清除缓存时进行清理操作。这个示例可能包括以下步骤: 1. 数据获取:从服务器...

    app缓存清理工具类,清除缓存

    **********************关于应用清理缓存的工具类************************************

    html+app、mui+app等html移动端开发、计算当前APP缓存的数据大小和清除当前APP缓存等常用函数

    html+app、mui+app等html移动端开发、计算当前APP缓存的数据大小和清除当前APP缓存等常用函数,为了解决html移动端开发因图片缓存或数据缓存到最后内存过大后导致app程序卡顿。

    关于APP清理缓存

    首先,我们需要了解APP缓存的工作机制。当一个APP首次打开或访问某个网页时,它会下载并存储一些关键信息,如图片、HTML代码、JavaScript等,这些就是缓存。下次再次访问时,APP可以直接从本地缓存读取数据,而无需...

    清除App缓存

    描 述: 主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录

    chrome缓存清除扩展程序,通过js清除chrome缓存的api演示

    appCache: true, // 清除App Cache fileSystem: true, // 清除文件系统 indexedDB: true, // 清除IndexedDB local storage: true, // 清除localStorage plugins: true, // 清除插件数据 serviceWorkers: true,...

    OC清除缓存Demo

    除了手动清理,还可以利用iOS的系统服务,比如App Transport Security(ATS)和HTTP响应缓存策略,来控制网络请求的缓存行为。ATS可以配置为限制应用接收不安全的网络数据,而HTTP响应缓存可以通过设置`NSURLRequest...

    应用清除缓存代码

    用于android清除缓存功能

    react-native-clear-app-cache:清理app缓存 React-Native模块封装 支持iOSAndroid

    README Author  E-mail ...支持 iOS Android 清理app缓存 安装使用 npm install --save react-native-clear-app-cache Then link with: react-native link react-native-clear-app-cache 运行示例

    如何清除Windows的DNS缓存,清除chrome的DNS缓存,清除chrome的socket缓存.zip

    本篇将详细介绍如何在Windows系统中清除DNS缓存,以及在Chrome浏览器中清除DNS缓存和Socket缓存。 **一、清除Windows DNS缓存** Windows操作系统会自动存储DNS查询结果以提高后续访问的速度,但这些缓存可能过时,...

    Android清除缓存

    因此,适时地清除缓存至关重要。`CleanMessageUtil.java` 文件很可能包含一个用于清理Android应用缓存的工具类。现在,我们来详细探讨Android缓存的类型、清理方法以及如何编写这样的清理工具。 1. **缓存类型:** ...

    通过反射机制调用系统隐藏的API清除手机所有的app缓存.关键方法freeStorageAndNotify。前提添加AIDL文件.zip

    通过反射机制调用系统隐藏的API清除手机所有的app缓存.关键方法freeStorageAndNotify。前提添加AIDL文件.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    获取本应用和全部app缓存以及清理全解

    - 手动清理:进入设置 &gt; 应用管理 &gt; 选择应用 &gt; 存储 &gt; 清除缓存。 - 自动清理:可以编写一个简单的Android应用,获取应用列表并遍历,调用`Context.deleteDatabase()`或`Context.deleteCacheDir()`方法清理缓存。...

    OC-获取app缓存大小

    其中,Cache目录通常用于存储非关键性的临时数据,这些数据可以在系统需要时被清除,以释放存储空间。 **获取缓存大小的步骤:** 1. **遍历Cache目录**:首先,我们需要获取到应用的Cache目录路径。可以使用`...

    web项目页面缓存清除,不用每次刷新浏览器

    6. **Web App Manifest**:在创建Web应用程序时,manifest文件可以指示哪些资源应该被缓存,哪些资源需要在线使用。更新manifest文件也能触发Service Worker的更新,进而更新缓存。 7. **前端构建工具**:像Webpack...

    Android应用缓存机制

    此外,开发者还应遵循Google的Best Practices,如在应用卸载或更新时清除缓存,以避免数据残留。 总之,Android应用缓存机制涉及多方面,合理的缓存策略能够显著提升应用性能,降低数据传输成本,同时需要注意内存...

    iOS-Swift清除缓存

    然而,有时为了释放存储空间或者确保数据的更新,我们需要清除应用的缓存。Swift作为iOS开发的主要编程语言,提供了多种方式来管理并清除缓存。本文将深入探讨在Swift中如何有效地进行缓存清理。 首先,我们了解...

    优化了keepAlive的缓存机制可以像APP那样前进刷新返回销毁

    1. **前进刷新**:在原生APP中,前进操作通常意味着新页面的加载,这可能会清除之前页面的状态。在Vue.js中,通过监听路由变化并手动更新`keep-alive`内的组件状态,可以模拟这个行为。例如,在`beforeRouteEnter`...

    APP清除缓存功能的具体实现-附件资源

    APP清除缓存功能的具体实现-附件资源

Global site tag (gtag.js) - Google Analytics