我是 Android 的新手。我正在尝试创建一个包含大量图像和一些元数据的社交应用程序。它有一个类似于 Facebook 上的提要的屏幕。我想让这个屏幕尽可能流畅和标准。
以下是我正在使用的库:OkHttp、Picasso、Retrofit、Gson。
现在,我正在一次获取所有 json,因为我在后端播种了虚拟值并且响应足够小。但是,将来,它将有 previous 和 next 字段来限制 json 响应。
我现在的一些问题:
我正在使用带有 OkHttp 的 Picasso。是将图像也缓存在磁盘中还是仅缓存在内存中?
缓存提要的最佳做法是什么?由于大部分内容是图像,我应该让 Picasso 处理缓存还是我自己缓存一些项目?从 JakeWharton 那里听说过 DiskLruCache 库,但没有尝试过。我应该和它一起去吗?
如何在缓存中沿任一滚动方向保留某些 Feed 内容(如 3 或 4),以便滚动看起来平滑,并且图像在进入 View 后不会开始加载。
<当用户滚动一次获取的所有内容时,如何使用上一个和下一个字段自动处理 json 响应。基本上我想根据基于光标滚动的内容数量触发请求。
假设有一个点赞按钮并且用户点击了它,我应该更改 UI 中点赞的数量并通过发送 POST 请求更新计数器还是应该发送请求并等待更新的计数器在 UI 中更新之前从服务器获取?
我已经看过Instamaterial的源代码了并学习了一些了不起的东西。但它并没有演示整个后端集成。
我只是想知道是否还有其他开源应用程序可以让我学习或学习。如果您知道任何教程也会有所帮助。我只想让应用体验尽可能流畅,并想学习一些最佳实践。
最佳答案
这将缓存到磁盘和内存。如果将 Picasso 设置为 Debug模式,它将显示一个指示器,描述图像从何处加载(内存/磁盘/网络)
如果您不介意 Picasso 控制内容的缓存时间等,那么让它处理缓存应该没问题。我也很确定 Picasso 使用
DiskLruCache
如果您在这里主要关心的是图像,它们将全部被缓存并且在缓存一次后不需要加载(直到更新)。您还可以向 Picasso 注册回调,以更改显示或隐藏占位符的逻辑。
我认为您正在寻找的是 ListView 上的滚动监听器(我假设您使用的是 ListView )。当它超过某个位置(5/6)时开始加载下一个 10。如果您使用的是 recyclerview,则可以使用滚动监听器中的
onScrollStateChanged
函数执行此操作,并使用LinearLayoutManager
调用findLastVisibleItemPosition
采用哪种方法并不重要。如果您认为更新服务器计数器需要很长时间(不应该),那么最好先在本地更新它。
关于android - 如何在 Android 中正确实现 feed(类似于 Facebook/Instagram)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32693996/