ListView
ダウンロード可能なオブジェクトの束を示す があります。ユーザーがリスト アイテムをクリックすると、アイテムが を通じてダウンロードAsyncTask
され、ダウンロードの進行状況を示す通知も行われます。また、進行状況を ListView アイテム内に表示したいと考えています。
アイテムをオフラインで使用できるようにするときは、多かれ少なかれ Google ドライブのように動作したいと考えています。
私の問題: ダウンロードが完了する前にアプリが閉じられる状況を考えると、ダウンロード ステータスを "保存" する堅牢な方法が思い浮かびません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);