如何执行Clear();在另一个活动的FileCache.class中。我正在展示我编纂的一小部分内容。我的目标是清除每个出口上的外部缓存文件。任何人都可以告诉我它是如何完成的。谢谢
FileCache.class
public class FileCache {
private File cacheDir;
public FileCache(Context context){
//Find the dir to save cached images
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"LazyList");
else
cacheDir=context.getCacheDir();
if(!cacheDir.exists())
cacheDir.mkdirs();
}
public File getFile(String url){
//I identify images by hashcode. Not a perfect solution, good for the demo.
String filename=String.valueOf(url.hashCode());
//Another possible solution (thanks to grantland)
//String filename = URLEncoder.encode(url);
File f = new File(cacheDir, filename);
return f;
}
public void clear(){
File[] files=cacheDir.listFiles();
if(files==null)
return;
for(File f:files)
f.delete();
}
}
MyMainActivity.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);
new clear(); //<<--- How do i Call clear(); in FileCache.class
System.exit(0);
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
答案 0 :(得分:2)
试试这个。
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);
FileCache loader = new FileCache(null);
loader.clear();
System.exit(0);
}
答案 1 :(得分:1)
这样的东西?
public void onClick(DialogInterface dialog, int id) {
new FileCache( MyMainActivity.this ).clear();
}
答案 2 :(得分:0)
我确信您已为Lazy load of images in Android实施了解决方案。
ImageLoader类中已经有了clearCache()方法:
public void clearCache() {
memoryCache.clear();
fileCache.clear();
}
因此,您可以通过调用clearCache()方法清除缓存,如下所示:
ImageLoader imgLoader = new ImageLoader(mContext);
imgLoader.clearCache();
答案 3 :(得分:0)
您需要对FileCache对象的引用。我想你是从活动的onCreate()
创建的。如果是这样,请将FileCache作为活动的属性。这样,您就可以从myFileCacheReference.clear()
调用onBackPressed()
。
public class MainActivity extends Activity {
private FileCache myFileCacheRef;
public void onCreate(Bundle b) {
//standard stuff
myFileCacheRef = new FileCache();
}
public void onBackPressed() {
myFileCacheRef.clear();
}
}
这样的事情应该有效。