2017-02-21 6 views
0

PerferenceFragmentPerference을 추가합니다.Fresco diskcache를 삭제하고 크기를 계산하는 방법에있어 무엇이 잘못 되었습니까?

deleteCache.setOnPreferenceClickListener(preference -> { 
     Fresco.getImagePipeline().clearDiskCaches(); 
     deleteCache.setSummary(String.format(getString(R.string.delete_format), getDiskSize())); 
     return true; 
    }); 

public static final long getDiskSize(){ 
    long bytes = Fresco.getImagePipelineFactory().getMainFileCache().getSize(); 
    return bytes==-1?0:bytes; 
} 

나는 내가 perferencegetDiskSize() 즉, 0을 반환해야 클릭,하지만 두 번째 번 이상 클릭해야 다음 summary이 diskcache 내 솔루션에 대한 이유를 찾을 수 없습니다 0 B.I 것을 보여이라고 생각합니다.

더 많은 정보 :

ImagePipelineConfig

Set<RequestListener> requestListeners = new HashSet<>(); 
    requestListeners.add(new RequestLoggingListener()); 
    ImagePipelineConfig config = OkHttpImagePipelineConfigFactory 
      .newBuilder(this, RetrofitHelper.initClient()) 
      .setBitmapsConfig(Bitmap.Config.RGB_565) 
      .setRequestListeners(requestListeners) 
      .build(); 

내가 할 수 Fresco.getImagePipeline().clearCaches();를 사용 preferencegetDiskSize() 처음 0을 반환하지 못하면 클릭하십시오.

답변

0

코드를 읽으면 비동기 작업임을 알 수 있습니다.

return Task.call(
     new Callable<Void>() { 
     @Override 
     public Void call() throws Exception { 
      mStagingArea.remove(key); 
      mFileCache.remove(key); 
      return null; 
     } 
     }, 
     mWriteExecutor); 
/** 
* Represents the result of an asynchronous operation. 
* 
* @param <TResult> 
*   The type of the result of the task. 
*/ 
public class Task<TResult>