在我的Android应用程序中,我正在发送一个http请求,获取一些数据,将其放入我当地的sqlite数据库&然后使用该数据填充gridview。我有一个活动的代码,但我现在需要使用片段来完成这个,因为有很多类似的页面要显示。我读到使用Loader是处理片段中数据的最佳方式。
我不确定:
有人可以帮我这个吗?尝试寻找好的例子或教程,但我还没有找到真正有用的东西。所以,如果可以的话,请提出建议。感谢
答案 0 :(得分:2)
是否使用CursorLoader,Async taskLoader或 SQLiteLoader(由commons guy开发)。
CursorLoader
适用于ContentProviders
(这不是您的情况),AsyncTaskLoader
是可行的方法。我没有使用Commonsware的类,但如果他们允许覆盖他们的一些方法,那么我想你可以使用它。
在哪个加载器函数中(onCreateLoader(),onLoadFinished() 我把我的代码用于发出http请求,填充本地 数据库&在我的片段
中获取显示在gridview中的数据
在这些回调中没有一个,因为它们(很可能)在主UI上运行,你不能在那里进行网络操作。 Loader
子类具有在后台线程上运行的loadInBackground
方法。在此方法上,Loader
查询数据,您可以在其中放置网络请求和数据库更新。但是你需要非常小心才能在数据库中插入重复的数据。
我也使用延迟加载列表来显示图像。这将如何适应 整个事情,如果我使用装载机
由于我没有看到你的代码,我不认为这两个部分是连接的。我猜你在GridView
的适配器中直接使用延迟图像加载代码。
我的建议是不要使用Loaders来加载和插入数据,因为它们的目的是仅在后台线程上加载数据(负责配置更改)。对于您的特定情况,我会创建自己的AsyncTaskLoader
(或使用Commonsware的库),它会在数据库中查询新数据。然后我会启动一个新的AsyncTask
来执行http请求并在数据库中插入数据,然后我会在Loader
onPostExecute
方法中触发AsyncTask
重启(getLoaderManager().restartLoader...
)。对于与您要执行的操作相关的一些问题,请查看at this similar个问题。