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

但是,我不能在辅助线程中使用观察者,它必须在主线程中。我的错误类型为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();
    }
}

最佳答案

经过研究后,我可以找到如何使用ListenableWorker在WorkManager中异步执行工作

07-27 20:58