在 worker 中使用 Livedata 观察器
Using a Livedata observer in a worker
我有一个 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();
}
}
经过一些研究,我发现如何使用 ListenableWorker
在 WorkManager 中异步执行工作
我有一个 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();
}
}
经过一些研究,我发现如何使用 ListenableWorker
在 WorkManager 中异步执行工作