Ich habe eine App, in der ich einen WorkManager deklariert habe, und die überschriebene Funktion doWork () wird drei- oder viermal aufgerufen, sobald meine App gestartet wird, ohne dass das System sie jederzeit im Code starten muss ...
Ich habe überprüft, dass in der Anwendung kein Verweis auf den WorkManager erfolgt wäre. Es gibt nur eine in der App.kt-Datei (die Application () erweitert).
In App.kt:
class App : Application(){
companion object {
var appSyncRepository = AppSyncRepository()
}
}
In AppSyncRepository.kt:
class AppSyncRepository {
}
class AppSyncRepositoryWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
override fun doWork(): Result {
return Result.success()
}
}
Ich würde erwarten, dass der Worker nicht aufgerufen wird, da ich vorerst weder einen OneTimeWorkRequestBuilder noch einen PeriodicWorkRequestBuilder deklariert habe.
Entschuldigung, ich habe nicht genug Ruf, um einen Kommentar abzugeben.
Haben Sie in Ihren Tests eine PeriodicWorkRequestBuilder-Anforderung festgelegt? Wenn ja, müssen Sie es abbrechen.
Als ersten Schritt würde ich überprüfen, was geplant ist.
void cancelJob(){
WorkManager.getInstance(mContext).cancelAllWorkByTag(SYNC_WORK_JOB1);
WorkManager.getInstance(mContext).cancelAllWork();
Log.d(TAG, "Job cancelled!");
}
private boolean isWorkScheduled() {
WorkManager instance = WorkManager.getInstance(mContext);
ListenableFuture<List<WorkInfo>> statuses = instance.getWorkInfosByTag(SYNC_WORK_JOB1);
try {
boolean running = false;
List<WorkInfo> workInfoList = statuses.get();
for (WorkInfo workInfo : workInfoList) {
WorkInfo.State state = workInfo.getState();
running = state == WorkInfo.State.RUNNING | state == WorkInfo.State.ENQUEUED;
}
return running;
} catch (ExecutionException e) {
e.printStackTrace();
return false;
} catch (InterruptedException e) {
e.printStackTrace();
return false;
}
}
Oder Sie könnten in einem Terminalfenster laufen
adb shell dumpsys jobscheduler | grep -C 5 SyncWorkManagerService
adb shell dumpsys jobscheduler | grep -B 10 "Pending queue"
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen