我一直在为Android工作。该库有一个方法,它从Web服务获取数据并将其放入数据库中。当然,提取部分不是在主线程上完成的。这是一个示例方法:
public void fetchData() {
remoteTable.get(new TableOperationCallback<TEntity>() {
public void onCompleted(TEntity entity, Exception exception, ServiceFilterResponse response) {
if (exception == null) {
//CALBACK RECEIVED
//Put data in local database.
}
});
}
现在,在我的应用程序的其他地方,正在使用库,我会做这样的事情来刷新数据:
public void refreshData(){
mylibrary.fetchData();
List<MyItems> mList = localtable.getItems();
}
这里,第一个语句将在后台线程上获取数据。因此,即使在实际获取数据之前,也会执行第二个语句。我该如何解决这个问题?我希望第二个语句只有在第一个语句的回调完成后才能执行。
修改:如果重要,方法refreshData
不在任何活动中。我把那个方法放在一个单独的类中(并称之为ViewModel
- .NET习惯!)。
答案 0 :(得分:0)
您可以查看此链接 Android Update Current Activity From Background Thread
你基本上想要一个Callback接口。当库中的任务完成后,您就可以执行必须执行的操作