我有一个服务,它从Web获取一些数据并更新一个"存储"在应用程序中的列表.
因此,我可以从主活动访问它并将其用于我的ArrayAdapter.
更新数据时,列表中引用的项目会更改.
我的问题是,在主要活动中更新适配器中的数据的最佳做法是什么?
我有两个解决方案,但我不知道它们是否正确.除此之外,我想实现一个不使用太多电池的版本!
第一个:每秒调用一次的线程,用notifyDataSetChanged()更新适配器:
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();
}
};
Run Code Online (Sandbox Code Playgroud)
第二:使用延迟的Handler post私有final Handler handler = new Handler(); …