有几个关于如何实现自定义AsyncTaskLoaders的教程,但我发现没有讨论如何处理数据缓存 - 所有这些都只是加载和传递数据。
您能否给我一些提示,告诉我如何实现自定义AsyncTaskLoader,它会立即返回数据的缓存版本,但同时请求更新数据并在它们到达后立即提供更新的数据?这对装载机来说是否可行,或者我是否必须使用其他机制?
背景:我有一个IntentService,它接受数据加载请求并在广播中传递结果。我有一个UI(ListView),应该显示ArrayAdapter或CrusorAdapter中的数据。我需要一些“缓存”层来保持最新的数据知名版本立即显示,但发布更新并在新数据到达后立即重新显示。
虽然这可以使用愚蠢的SQLite数据库用于即时版本和广播接收器用于新数据更新,但我会优先考虑使这种“backgorund”数据加载机制透明,如Loader派生类IMHO可能是
答案 0 :(得分:-1)
是的,AsycnTask
是执行此操作的最佳方式。您要做的就是在onPostExecute()
的{{1}}上写入缓存。这可以通过创建比较数据时间的时间戳来完成,如果有新的时间,则使用该数据。否则,您将不得不比较所有数据,这可能需要宝贵的时间和资源,因此这将取决于您拥有多少数据。
这是一个可能有用的链接:
http://developer.android.com/training/efficient-downloads/redundant_redundant.html