目前我正在为我的一个模块实现MVP
模式,该模块有多个loaders
但我在第二次加载器调用中更新通知时遇到问题
场景:
Fragment最初调用Presenter.loadMethod()
来加载gridview
中的数据,一旦用户点击单个项目Presenter调用Presenter.Download()
方法下载文件(不使用download manager
)
我需要更新进度指示,例如文件是处于下载状态还是进度状态,但是当方向更改时,我在使用InitLoader()
时无法更新通知栏。
我也试过restartLoader()
,但仍面临同样的问题。
有谁能解释一下解决这个问题的最佳方法是什么?
答案 0 :(得分:1)
您需要保留正在下载的项目列表,将列表保存在onSaveInstanceState()
中。为每个下载项启动单独的loader
。
在onCreate()
方法中,您可以恢复正在下载的项目,并通过调用loaders
重新连接到getLoaderManager().initLoader(itemId, null, this)
。
在onLoadFinished()
中,您应检查项目是否已成功下载并将其状态更改为"已下载",然后从列表中删除该项目。