我有一个ListView
显示一堆可下载对象的。当用户单击列表项时,该项目会通过 下载AsyncTask
,并且还会发出通知以显示下载进度。我还希望在 ListView 项中显示进度。
当您使项目脱机可用时,我希望其行为或多或少像 Google Drive。
我的问题:考虑到应用程序在下载完成之前关闭的情况,我想不出一种可靠的方式来“存储”可以在getView()
.
最好onProgressUpdate()
将下载进度存储在数据库中,活动内部的变量还是直接修改ListView子项?
编辑
对于任何感兴趣的人,我使用了一个在下载状态发生变化时发送广播的服务:
活动:
private BroadcastReceiver mDataSetChangedReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(downloadDetailFragment!=null){
downloadDetailFragment.notifyDataSetChanged();
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocalBroadcastManager.getInstance(this).registerReceiver(mDataSetChangedReceiver,
new IntentFilter(DownloadService.DOWNLOAD_STATUS_CHANGED));
}
@Override
protected void onDestroy() {
super.onDestroy();
LocalBroadcastManager.getInstance(this).unregisterReceiver(mDataSetChangedReceiver); }
异步任务:
Intent intent = new Intent(DownloadService.DOWNLOAD_STATUS_CHANGED);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);