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