[英]Caching on Android
我有一个应用程序,它从 Parse.com 获取数据并在 2 个部分中使用,一个在 listView 中,第二个在网格视图中。
所以我想缓存这个数据(字符串,位图),离线工作,只要设备没有互联网,它就从缓存加载。 每当我的应用程序关闭并再次打开时,如果有互联网,它应该更新缓存的数据。 在更新期间,如果我的缓存中有相同的数据,则不应再次创建它,它只需要创建新数据并更新视图。
在 android 中执行此操作的最佳方法是什么? 谢谢。
用于缓存来自Webservice的数据
对于获取数据,您可以在获取数据后使用Volley或翻新,您可以将其设置为用户所需的属性来缓存数据,两个库都提供了用于保存数据的缓存选项,请尝试使用该库。
要缓存图像,您可以使用以下库:Glide,Picaso ...要缓存文本,您需要使用HttpClient设置缓存。 例:
private void configureCache() {
if (cache == null)
cache = createHttpClientCache(context);
mHttpClient.setCache(cache);
mHttpClient.networkInterceptors().add(REWRITE_CACHE_CONTROL_INTERCEPTOR);
}
private static Cache createHttpClientCache(Context context) {
File cacheDir = context.getDir("cache_api", Context.MODE_PRIVATE);
return new Cache(cacheDir, HTTP_CACHE_SIZE);
}
试试这个代码将有帮助-
File cacheDir = getBaseContext().getCacheDir();
File f = new File(cacheDir, "pic");
try {
FileOutputStream out = new FileOutputStream(
f);
pic.compress(
Bitmap.CompressFormat.JPEG,
100, out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Intent intent = new Intent(
AndroidActivity.this,
OpenPictureActivity.class);
startActivity(intent);
然后在新活动中
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.open_pic_layout);
File cacheDir = getBaseContext().getCacheDir();
File f = new File(cacheDir, "pic");
FileInputStream fis = null;
try {
fis = new FileInputStream(f);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Bitmap bitmap = BitmapFactory.decodeStream(fis);
ImageView viewBitmap = (ImageView) findViewById(R.id.icon2);
viewBitmap.setImageBitmap(bitmap);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.