在工作者中使用Livedata观察器

问题描述 投票:0回答:1

我有一个Worker服务,可以发送一些简单的通知。但是现在,我想在发送之前检查数据库中的一些数据。

但是,我不能在辅助线程中使用观察者,它必须在主线程中。我的错误类型为java.lang.IllegalStateException: Cannot invoke observeForever on a background thread

访问我的会议室数据库数据的最佳解决方案是什么?

public class NotificationWorker extends Worker {

    FavoriteRepository favoriteRepository;

    public NotificationWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
        favoriteRepository = new FavoriteRepository(((MainApplication) context.getApplicationContext()));
    }

    @NonNull
    @Override
    public Result doWork() {

        favoriteRepository.getAllFavorites().observeForever(new Observer<List<Favorite>>() {
            @Override
            public void onChanged(List<Favorite> favorites) {
                // get data
            }
        });
        showNotification("WorkManager", "Content of message");
        return Result.success();
    }
}
java android mvvm android-service
1个回答
0
投票

经过一些研究,我发现如何通过ListenableWorker在WorkManager中异步执行工作

© www.soinside.com 2019 - 2024. All rights reserved.