Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在退出时清除图像内存缓存_Android_Image_Gridview_Memcached - Fatal编程技术网

Android在退出时清除图像内存缓存

Android在退出时清除图像内存缓存,android,image,gridview,memcached,Android,Image,Gridview,Memcached,我希望我的应用程序在退出时清除图像缓存。我不知道如何从映像加载程序活动调用clearcache()。我收到一个错误“范围内无法访问MainGridViewImageLoader类型的封闭实例”。有人能告诉我怎么做吗?下面是我的代码,我已经用注释标记了这些区域 MainPageActivity.class @Override public void onBackPressed() { AlertDialog.Builder builder = new Ale

我希望我的应用程序在退出时清除图像缓存。我不知道如何从映像加载程序活动调用clearcache()。我收到一个错误“
范围内无法访问MainGridViewImageLoader类型的封闭实例”。有人能告诉我怎么做吗?下面是我的代码,我已经用注释标记了这些区域

MainPageActivity.class

@Override
        public void onBackPressed() {
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Do you want to exit?")
                   .setCancelable(false)
                   .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {

                           Intent intent = new Intent(Intent.ACTION_MAIN);
                           intent.addCategory(Intent.CATEGORY_HOME);
                           intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                           startActivity(intent);

                           MainGridViewImageLoader.this.clearCache(); //<<"No enclosing instance of the type MainGridViewImageLoader is accessible in scope"
                               System.exit(0);
                       }
                   })
                   .setNegativeButton("No", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                       }
                   });
            AlertDialog alert = builder.create();
            alert.show();

    }
@覆盖
public void onBackPressed(){
AlertDialog.Builder=新建AlertDialog.Builder(此);
setMessage(“是否要退出?”)
.setCancelable(错误)
.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
意向意向=新意向(意向.行动\主要);
intent.addCategory(intent.CATEGORY_HOME);
intent.setFlags(intent.FLAG\u活动\u新任务);
星触觉(意向);

MainGridViewImageLoader.this.clearCache();//下面的代码会清除我的图像内存缓存吗

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();
         }
public void clearApplicationData()
{
文件缓存=getCacheDir();
File appDir=新文件(cache.getParent());
if(appDir.exists()){
String[]children=appDir.list();
for(字符串s:子项){
如果(!s.equals(“lib”)){
deleteDir(新文件(appDir,s));Log.i(“TAG”,“*************************文件/data/data/APP_包/“+s+”已删除****************************”;
}
}
}
}
公共静态布尔deleteDir(文件目录)
{
if(dir!=null&&dir.isDirectory()){
String[]children=dir.list();
for(int i=0;i
您尝试通过
MainGridViewImageLoader访问MainGridViewImageLoader。此
。 只有当您的MainPageActivity是MainGridViewImageLoader的内部类时,它才会起作用,而它显然不是

您应该使用对MainGridViewImageLoader对象的常规引用。可能在某个地方使用了
MainGridViewImageLoader=new MainGridViewImageLoader()
。请使用该变量,而不是
MainGridViewImageLoader。此

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();
         }