Android:编程清除caching

如何清除Android手机中的每个应用程序的caching程序化? 在android中允许以编程方式清除caching? 如果允许,如何? 我已经试图研究它,我找不到我需要的答案

Solutions Collecting From Web of "Android:编程清除caching"

我find了这个:

import java.io.File; import android.app.Activity; import android.content.Context; import android.os.Bundle; public class HelloWorld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle *) { super.onCreate(*); setContentView(R.layout.main); } @Override protected void onStop(){ super.onStop(); } //Fires after the OnStop() state @Override protected void onDestroy() { super.onDestroy(); try { trimCache(this); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void trimCache(Context context) { try { File dir = context.getCacheDir(); if (dir != null && dir.isDirectory()) { deleteDir(dir); } } catch (Exception e) { // TODO: handle exception } } public static 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; } } } // The directory is now empty so delete it return dir.delete(); } } 

这可能对你有所帮助。

这是一个有趣的场景。 在Manifest.Permission 文档中

公共静态最终stringCLEAR_APP_CACHE

在API级别1中添加允许应用程序清除设备上所有已安装的应用程序的高速caching。

常量值:“android.permission.CLEAR_APP_CACHE”

所以你可以获得清除所有应用程序caching的权限。 但我不认为在SDK中有任何方法来使用此权限。 所以你可以持有这个许可,不要做任何事情。 奇怪从谷歌。

编辑: 这个谷歌讨论可能是有趣的。 Dianne Hackborn特别指出,上面的权限不应该出现在SDK中,因为使用它的API不存在。

要清除应用程序数据,请尝试这种方式。 我想这会帮助你。

 public void clearApplicationData() { File cache = getCacheDir(); File appDir = new File(cache.getParent()); if (appDir.exists()) { String[] children = appDir.list(); for (String s : children) { if (!s.equals("lib")) { deleteDir(new File(appDir, s));Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************"); } } } } public static 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(); }