2

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

    }
4

4 に答える 4

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);
                           }
于 2012-08-31T10:46:56.313 に答える
1

このようなもの?

public void onClick(DialogInterface dialog, int id) {
    new  FileCache( MyMainActivity.this ).clear();
}
于 2012-08-31T10:53:25.907 に答える
0

Android での画像の遅延ロードのソリューションを実装したと確信しています。

ImageLoader クラスにはすでに clearCache() メソッドが指定されています。

 public void clearCache() {
        memoryCache.clear();
        fileCache.clear();
    }

したがって、次のように clearCache() メソッドを呼び出してキャッシュをクリアできます。

ImageLoader imgLoader = new ImageLoader(mContext);
imgLoader.clearCache();
于 2012-08-31T10:51:11.827 に答える
0

FileCache オブジェクトへの参照が必要です。onCreate()from アクティビティで作成すると思います。その場合は、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();
  }
}

このようなものが機能するはずです。

于 2012-08-31T10:53:46.797 に答える