android– 如何在ContentProvider中缓存位图?

android– 如何在ContentProvider中缓存位图?,第1张

概述你怎么理解这个笔记 Note: A ContentProvider might be a more appropriate place to store cached images if they are accessed more frequently, for example in an image gallery application.

你怎么理解这个笔记

Note: A ContentProvIDer might be a more appropriate place to store
cached images if they are accessed more frequently,for example in an
image gallery application.

在这篇培训文章https://developer.android.com/training/displaying-bitmaps/cache-bitmap.html中?由于我无法从Cursor获取Bitmap或file,我如何通过ContentProvIDer缓存位图?最佳答案实际上,您可以使用ContentProvIDer读取和写入文件.

要在您自己的ContentProvIDer中支持此功能,您必须在getStreamTypes()方法中包含支持的文件MIME类型.检查AndroID ContentProvider tutorial here for more info的MIME类型部分.

您还需要实现openFile(Uri uri,String mode) method,您可以根据提供给ContentResolver的Uri实际选择文件目录和名称.以下是该方法的示例实现:

  @OverrIDe  public ParcelfileDescriptor openfile(Uri uri,String mode) throws fileNotFoundException {      file root = getContext().getfilesDir();      file path = new file(root,uri.getEncodedpath());      path.mkdirs();      file file = new file(path,"file_"+uri.getLastPathSegment());      int imode = 0;      if (mode.contains("w")) {        imode |= ParcelfileDescriptor.MODE_WRITE_ONLY;        if (!file.exists()) {          try {            file.createNewfile();          } catch (IOException e) {            e.printstacktrace();          }        }      }      if (mode.contains("r"))        imode |= ParcelfileDescriptor.MODE_READ_ONLY;      if (mode.contains("+"))        imode |= ParcelfileDescriptor.MODE_APPEND;      return ParcelfileDescriptor.open(file,imode);  }

您可以使用此处的任何逻辑来选择文件目录.此代码只使用应用程序文件目录,但出于Bitmap缓存的目的,这应该使用临时缓存目录.

最后,访问ContentProvIDer文件数据的代码应如下所示:

ContentResolver cr = getContext().getContentResolver();inputStream inputStream = cr.openinputStream(uri);

或者,您可以使用ContentResolver.openOutputStream(uri)将文件数据写入ContentProvIDer.

Bitmap缓存教程需要进行相当多的修改才能将ContentProvIDer用作磁盘缓存,但我确实认为这是该笔记所指的内容.

总结

以上是内存溢出为你收集整理的android – 如何在ContentProvider中缓存位图?全部内容,希望文章能够帮你解决android – 如何在ContentProvider中缓存位图?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1140106.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存