在工作人员中使用 Livedata 观察者

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


但是,我不能在工作线程中使用观察者,它必须在主线程中。我有一个错误类型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();

    }

}


回首忆惘然
浏览 55回答 0
0回答

交互式爱情

经过一些研究后,我可以找到如何使用ListenableWorker在 WorkManager 中异步执行工作
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java