Webからデータを取り出し、アプリケーションに格納されているListを更新するサービスがあります。ベストプラクティス:ArrayAdapterを継続的に更新
したがって、私は主なアクティビティからアクセスでき、それを私のArrayAdapterに使用することができます。
データを更新すると、リストの参照アイテムが変更されます。
私の質問は、メインアクティビティでアダプタのデータを更新するのがベストプラクティスですか?
私は2つの解決策を念頭に置いていますが、正しいかどうかはわかりません。それに加えて、私は多くのバッテリーを使用していないバージョンを実装したいと思います!第二に
private void startListUpdateThread()
{
Thread ListManageThread = new Thread() {
LinkItem listItem;
public void run() {
Log.d("DL", "List Update - start");
while(true)
{
runOnUiThread(UpdateGUIList);
try {
Thread.sleep(1000); //5Sekunden!
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("DL", "ERROR: InterruptedException - " + e.getMessage());
}
}
}
};
ListManageThread.start();
}
private Runnable UpdateGUIList = new Runnable() {
@Override
public void run() {
mFileAdapter.notifyDataSetChanged();
}
};
:
まず:notifyDataSetChanged()とアダプタの更新、毎秒呼ばれるスレッド遅れハンドラのポストを使用して 民間最終ハンドラハンドラ=新しいハンドラを();
private void startListUpdate()
{
handler.removeCallbacks(UpdateListUI);
handler.postDelayed(UpdateListUI, 1000); // 1 second
}
private Runnable UpdateListUI = new Runnable() {
public void run() {
//Remove Elements first
removeDeletedItemsFromList();
//Update Adapter
mFileAdapter.notifyDataSetChanged();
handler.postDelayed(this, 1500); // 1,5 seconds
}
};
だから、どうすればいいですか?おそらく、それを行うための他の方法もありますが、私はこれまで考えていませんでした!
私が間違っている場合は私を訂正してください。私の考えでは、非同期タスクはすぐに実行されているタスクを担当しており、_during_または_after_という更新が必要です。 – Webchen