Я использую рабочий для обработки уведомлений внутри моего приложения.Для этого я создал простой рабочий:
public class MyWorker extends Worker {
private static final String TAG = "MyWorker";
private final WorkerParameters workerParams;
private MessageRepository repository;
public MyWorker(@NonNull Context appContext, @NonNull WorkerParameters workerParams) {
super(appContext, workerParams);
this.workerParams = workerParams;
repository = ((BasicApp) appContext).getRepository();
}
@NonNull
@Override
public Result doWork() {
sendFeedback();
return Result.success();
}
}
Я называю это в MyFirebaseMessagingService, расширяет FirebaseMessagingService и в методе OnMessageReceive у меня есть:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
...
Map<String, Object> map = new HashMap<>();
map.put("internalID", internalID);
Data data = new Data.Builder()
.putAll(map)
.build();
OneTimeWorkRequest work = new OneTimeWorkRequest.Builder(MyWorker.class)
.setInputData(data)
.build();
WorkManager.getInstance(getApplicationContext()).enqueue(work).getResult();
}
В режиме отладки это неназывается doWork () и конструктор MyWorker.В чем может быть причина?
Более того, я хочу отметить, что если я использую этот код в работах (в kotlin):
val workRequest = PeriodicWorkRequest.Builder(DbPeriodicWorker::class.java, 15 , TimeUnit.MINUTES)
.setConstraints(constraint)
.addTag("feedbackCall")
.build()
[У меня есть код Java и Kotlin, так какЯ начал с проекта quickstart-android для firebase облачных сообщений android]
Я использую в качестве версии androidx.work:
def work_version = "2.1.0"
implementation "androidx.work:work-runtime:$work_version"
implementation "androidx.work:work-runtime-ktx:$work_version"
Заранее спасибо.