0

특정 작업이 특정 시간에 백그라운드에서 수행되도록 응용 프로그램을 개발 중입니다.시간별 작업을 트리거하기 위해 Firebase JobDispatcher를 사용할 수 있습니까?

Android 개발자는 다양한 방법을 제안합니다. AlarmManager를이 용도로 사용할 수 있다는 것을 알고 있습니다. 하지만 Android 6.0에서 Doze 모드의 AlarmManager를 사용하면 부적절한 트리거가 발생합니다.

나는 내 응용 프로그램은 안드로이드 5.0 이하 버전을 지원하므로 developer docs

에서 JobScheduling 라이브러리를 가로 질러왔다. 나는 FireBaseJobDispatcher를 사용하려고 생각했다.

FirebaseJobDispatcher를 사용하여 특정 작업을 특정 시간에 트리거 할 수 있습니까?

예를 들면 : 나는 DB를 오후 6시

답변

1

당신이 할 수있는 오전 9시에서 시간마다 업데이트 할 수 있지만 시간 창 그렇게 엄격하지 않은 경우, 귀하의 작업 시작 몇에서 작동하는 보증은 없다 몇 시간 후, Doze 모드 때문입니다. 정말로 엄격한 스케줄을 원할 경우 AlarmManager.setAndAllowWhileIdle을 사용하십시오. 그리고 FirebaseJobDispatcher가 아직 출시되지 않았으며 몇 가지 해결되지 않은 문제가 있음을 알고 있습니다. 출시하기 전에 GCMNetworkManager (Google Play 서비스 com.google.android.gms:play-services-gcm)를 사용할 수 있습니다. 내가 FJD은 0.5.0을 발표 생각

PeriodicTask task = new PeriodicTask.Builder() 
      .setService(SyncManagerService.class) 
      .setTag(TASK_TAG_SYNC_SERVICE) 
      .setUpdateCurrent(true) 
      .setPersisted(true) 
      .setPeriod(period) 
      .setFlex(flexInSeconds < period ? flexInSeconds : period) 
      .setRequiredNetwork(wifiOnly ? PeriodicTask.NETWORK_STATE_UNMETERED : PeriodicTask.NETWORK_STATE_CONNECTED) 
      .build(); 

GcmNetworkManager.getInstance(context).schedule(task); 
+0

https://github.com/firebase/firebase-jobdispatcher-android/ : GcmNetworkManager를 들어

final FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context)); if (isSyncEnabled) { Job job = dispatcher.newJobBuilder() .setService(SyncService.class) .setTag(TAG) .setConstraints(isSyncOnlyWiFi ? Constraint.ON_UNMETERED_NETWORK : Constraint.ON_ANY_NETWORK) .setRecurring(true) // !!! .setLifetime(Lifetime.FOREVER) //!!! .setTrigger(Trigger.executionWindow(syncIntervalInSeconds, syncIntervalInSeconds + TIME_WINDOW_IN_SECONDS)) .setReplaceCurrent(true) .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL) .build(); final int result = dispatcher.schedule(job); if (result != FirebaseJobDispatcher.SCHEDULE_RESULT_SUCCESS) { // pre handle error } 

: FirebaseJobDispatcher에 대한 코드는 수도 다음과 같습니다 출시 – John

+0

예, FJD가 출시되었습니다. 감사합니다. 하지만 여전히 안정적이지는 않습니다. –

+0

GCM 네트워크 관리자는 어떻습니까? 안정적입니까? 그리고 롤리팝 아래에서 사용할 수 있습니까? – John