我試圖緩存從網站獲得的圖像。但是,CacheManager.getCacheFileBaseDir()始終返回null。我是否需要在android模擬器中創建緩存文件夾?如果是,我該怎麼辦?應該在哪個目錄中創建?Android中的我的緩存文件夾爲空。我必須創建它嗎?
2
A
回答
3
不要使用它。每個答案都有一個文檔問題:How to use Android's CacheManager?。將Context#getCacheDir
用於特定於應用程序的緩存目錄。您必須自己完成所有緩存管理,但是,框架將在磁盤空間不足和管理應用程序卸載時管理內容。
2
如果你要緩存大量的數據,你應該使用SD卡,而不是內存。所以你可以在SD卡上創建一個目錄並保存你的緩存。
File cacheDir;
//Choose chache directory
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"MyCache");
else
cacheDir=context.getCacheDir();
//File in cache directory
File f=new File(cacheDir, "file.txt");
1
有建議使用Context.getExternalCacheDir()。
此位置將僅適用於您的應用程序,當您從Android設備上卸載應用程序時,此API將會刪除此位置。爲了使用這一點,您必須在AndroidManifest.xml中輸入以下語句作爲AndroidManifest.xml中的條目
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
相關問題
- 1. 我必須保存()我的NSManagedObjectContext嗎?
- 2. 我必須爲log4j中的所有類創建appender嗎?
- 3. 我必須爲每個webgl程序創建單獨的緩衝區嗎?
- 4. 我可以在Android內部存儲上創建文件夾嗎?
- 5. 如果文件指針爲空,我必須使用fclose()嗎? (C)
- 6. Inno Setup - 如何刪除我的程序所在的文件夾? (必須爲空)
- 7. 我必須在bin-debug中創建文件夾,然後在其中創建並寫入文本文件
- 8. 我需要創建一個帶有批處理文件的文件夾,但它必須自動命名
- 9. NSOperationQueue和NSOperation,我必須發佈它嗎?
- 10. 我是否必須從我的django項目文件夾中分離我的wsgi.py?
- 11. 我們真的必須改爲Object.create嗎?
- 12. 空流,我必須包括ostream嗎?
- 13. 我想創建一個DeskBand。我必須使用C++嗎?
- 14. Carrierwave,我的緩存文件夾中的2個文件夾和我的文件保留在我的緩存文件夾中
- 15. 如何在gradle文件夾中創建緩存文件夾?
- 16. 必須在不同的java文件中創建方法嗎?
- 17. 我必須使用Cgo創建的免費結構嗎?
- 18. 我必須在DbContext上創建顯式的DbSet屬性嗎?
- 19. SVN默認文件夾 - 必須使用它們嗎?
- 20. 我可以在android drawbale文件夾中爲圖像創建子文件夾
- 21. Xamarin Android:在PublicDirectory上爲我的應用創建文件夾
- 22. /android中的緩存/恢復文件夾
- 23. android(getCacheDir())中的緩存文件夾在功能上等同於iOS中的緩存文件夾(NSCachesDirectory)嗎?
- 24. 我必須使用.setup切換jwplayer中的視頻文件嗎?
- 25. 我已經創建了名稱爲「〜」的文件夾,我該如何進入它?
- 26. 爲什麼我必須在我的WPF中創建WCF的服務引用?
- 27. 我必須使用BreezeController嗎?
- 28. 我必須做StringIO.close()嗎?
- 29. 我必須這樣做嗎?
- 30. 我必須導入com.companyname.productname.R嗎?
我曾嘗試在「此答案」鏈接上發佈的代碼。然而,我得到了一個java.lang.nullPointerException – Lynnooi 2010-06-22 02:03:28
這行總是返回nullPointerException。我需要添加任何權限才能使用除INTERNET權限外的緩存嗎? CacheResult cache_result = CacheManager.getCacheFile(imageUrl,new HashMap()); – Lynnooi 2010-06-22 02:07:54
不,我的意思是說你不應該使用CacheManager,而且它的文檔是錯誤的。它不適合在webkit之外使用。如果你想要一個簡單快速的緩存目錄,你需要使用'Context#getCacheDir'。 – Qberticus 2010-06-22 03:19:52