在转到下一个之前等待完成最后一个语句

时间:2014-04-08 06:43:20

标签: java android multithreading asynchronous

我一直在为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习惯!)。

1 个答案:

答案 0 :(得分:0)

您可以查看此链接 Android Update Current Activity From Background Thread

你基本上想要一个Callback接口。当库中的任务完成后,您就可以执行必须执行的操作