我是
Android新手.我正在尝试创建一个包含大量图像和一些元数据的社交应用程序.它的屏幕类似于Facebook上的Feed.我想让这个屏幕尽可能平滑和标准.
以下是我使用的库:OkHttp,Picasso,Retrofit,Gson.
现在,我一次性获取所有json,因为我在后端播种了虚拟值,响应足够小.但是,将来它会有前一个和下一个字段来限制json响应.
我现在的一些问题:
>我正在使用毕加索和OkHttp.是否将图像缓存在磁盘中或仅在内存中?
>缓存Feed的最佳做法是什么?由于大多数内容都是图像,我应该让Picasso处理缓存还是应该自己缓存一些项目?听说JakeWharton的DiskLruCache库但没试过.我应该一起去吗?
>如何在缓存中的任一滚动方向保留一些Feed内容(如3或4),以便滚动显示平滑,并且图像在进入视图后不会开始加载.
>当用户滚动在此过程中提取的所有内容时,如何使用上一个和下一个字段自动处理json响应.基本上我想根据游标滚动的内容数触发请求.
>假设有一个类似按钮,用户点击它,我应该通过向更新计数器发送POST请求来更改UI和侧面的喜欢数量,还是应该发送请求并在更新之前等待来自服务器的更新计数器在用户界面?
我已经浏览了Instamaterial的源代码,并学习了一些令人惊奇的东西.但它并没有展示整个后端集成.
我只是想知道是否还有其他我可以学习或学习的开源应用程序.如果您知道任何有用的教程.我只想让应用程序体验尽可能顺畅,并希望学习一些最佳实践.
解决方法
>这将缓存到磁盘和内存.如果将Picasso设置为调试模式,它将显示一个指示器,用于描述从中加载图像的位置(内存/磁盘/网络) >如果你不介意Picasso控制缓存事物的时间等等,那么让它处理缓存应该没问题.我也很确定Picasso使用DiskLruCache >如果您的主要关注点是图像,它们都将被缓存,并且在它们完成之后不应该加载(直到它更新).您还可以使用Picasso注册回调,以便更改显示或隐藏占位符的逻辑. >我认为你正在寻找的是listview上的滚动监听器(我假设你正在使用列表视图).当它超过某个位置(5/6)时开始加载下一个10.如果你使用的是recyclerview,你可以使用滚动监听器中的onScrollStateChanged函数执行此操作,并使用LinearLayoutManagerto调用findLastVisibleItemPosition >你选择哪种方法并不重要.如果你认为它需要很长时间来更新服务器计数器(它不应该),那么最好先在本地更新它.