gpt4 book ai didi

android - 如何将 Assets 复制到 Android 中的缓存?

转载 作者:行者123 更新时间:2023-11-29 16:53:50 30 4
gpt4 key购买 nike

我需要将所有文件从 assets 文件夹复制到 android 缓存以更快地加载此数据。主要原因是在应用程序启动期间加载一次。在整个应用程序生命周期中,我可以从缓存中访问所需的文件,这可能会更快。我在网上搜索,但一无所获。怎么做?

最佳答案

一个Android“缓存目录”是通过在一些Context上调用getCacheDir()获得的,例如IntentServiceJobIntentService 。将一堆内容从 Assets 复制到文件系统上的文件中需要一些时间,因此具有后台线程的 Service 可能是合适的。进行实际的复制是一个问题:

  • AssetManager 获取所需 Assets 的 InputStream
  • 在要将内容写入的位置获取 FileOutputStream,例如 getCacheDir() 中的文件
  • 使用标准 Java I/O 复制字节

但是,请理解,“缓存”并不是您散布在应用程序上以使其更快的魔法小 Sprite 。例如,getCacheDir() 并不比 getFilesDir()getExternalCacheDir()getExtenalFilesDir() 快>,因为它们都指向相同的硬件(在大多数设备上)。文件系统上的文件可能比访问 Assets 更快,因为 Assets 存储在 APK 中,需要一些工作才能从 APK 中读取它们。因此,这可能会有所帮助。

但是,由于您没有使用方法跟踪、Log 语句或任何其他方法来确定您的时间花在了哪里,因此您完成这项工作后很可能一无所获改进。例如,my main book作为 APK 等格式发布。那本书有 200 多章,全部以 HTML 格式存储在 Assets 中。我没有发现加载 HTML 特别慢。由于您在这些页面中所做的事情的性质,使用文件而不是 Assets 可能对您的帮助大于对我的帮助。

但您的性能问题也可能来自:

  • JavaScript 做太多工作
  • 忘记了您正在从网络上下载一堆东西,因为它们的 URL 隐藏在某个地方(例如,CSS 文件中引用的图像),并且这些图像需要一段时间才能下载
  • 您正在您的应用程序中执行其他操作,同时您正在尝试加载此 Web 内容,因此您正在使设备的 CPU 过载
  • 等等

关于android - 如何将 Assets 复制到 Android 中的缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45551183/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com