等待AsyncTask.execute(())完成,然后返回结果

时间:2020-01-28 11:43:28

标签: android asynchronous android-asynctask android-room

我正在从本地Android RoomDB读取数据,并且我需要在后台进行数据处理,因为DB上不允许从UI Thread读取数据。所以我有这种方法:

@Override
public DBBackedRouteModel getDBBackedRouteModelByID(Long id) {
    AsyncTask.execute(() -> {
        this.dbBackedRouteModel = routesParser.getDBBackedRouteModel(id);
    });
    return dbBackedRouteModel;
}

是否有办法知道Async已经完成并仅返回结果?

2 个答案:

答案 0 :(得分:0)

您可以使用here。我不确定您要确切执行的操作,但是例如可以在异步完成后执行控制台日志。

答案 1 :(得分:0)

您可以使用EventBus。异步任务的onPostExecute()方法可以发布事件并传递要读取的值。 希望这能解决您的问题