Android Firebase Jobdispatcher 無法啟動



嗨,那边的安卓极客,

我正在开发一个使用'com.firebase:firebase-jobdispatcher:0.8.5'来安排作业的应用程序。但是作业不会在测试的设备中执行。

当我检查dumpsys activity service GcmService时,我得到了以下日志,其中我的作业被标记为尚未运行。

这种行为的可能原因是什么? 我还发现了类似READY_BATTERY_LOW的状态,是因为我的设备电池电量不足吗?但是在进行测试时,该设备的电池电量为58%。

此外,该设备已连接到Jio 4g网络。

dumpsys日志包含在下面,任何人都可以对这个问题发表一些评论。 :)


(scheduled( com.mypackage.testapp/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="test-sync-job" trigger=window{start=300s,end=360s,earliest=-459s,latest=-399s} requirements=[NET_ANY] 属性=[RECURRING] scheduled=-759s last_run=N/A jid=N/A status=READY_BATTERY_LOWretries=0 client_lib=FIREBASE_JOB_DISPATCHER-1}

尚未运行。


提前致谢:)

这是做职业的一点。

Driver = new GooglePlayDriver(context); 
firebaseJobDispatcher = new FirebaseJobDispatcher(driver); 
Occupation constraintReminderJob = firebaseJobDispatcher.newJobBuilder() 
.setService(ReminderService.class) 
.setTag(REMINDER_JOB_TAG) 
.setConstraints(Constraint.DEVICE_CHARGING) 
.setLifetime(Lifetime.FOREVER) 
.setRecurring(true) 
.setTrigger(Trigger.executionWindow( 
REMINDER_INTERVAL_SECONDS, 
REMINDER_INTERVAL_SECONDS + SYNC_FLEXTIME_SECONDS 
)) 
.setReplaceCurrent(true) 
.assemble(); 
firebaseJobDispatcher.schedule(constraintReminderJob); 

我们调查上述废料怎么样?

职业

有一些归属于职业。

一个字符串标签,(在应用程序内部(特别识别作业。

一个 JobService 子类,它将包含与 Job 标识的所有业务原理。

作业触发器将确定所创建的作业当前已准备好执行。

需要安排约束,同时牢记执行所做活动的最终目标。当然,它是未填充的,这意味着当启动 JobTrigger 时,作业将继续运行。

重试策略负责处理失望条件。默认设置是利用指数退避过程。

指示它应该保持计划的活动季节的生命周期。这

默认设置是将作业保持计划,直到下一次启动。

套餐是针对客户提供的附加物品。这是一个自由参数。

布尔值演示作业是否应重新哈希。默认值为 false,这意味着计划的作业将只执行一次。

布尔值显示预订的作业是否应取代任何先前的作业

是否具有类似的标签。此布尔横幅的默认激励为 false。

准备好活动后,您可以利用 plan(( 策略来计划活动。

open static void scheduleJob(Context setting) { 
FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context)); 
Occupation work = createJob(dispatcher); 
dispatcher.schedule(job); 
} 
ReminderService.class 
open class ReminderService broadens JobService { 
/** 
* This asynctask will run a vocation once conditions are met with the imperatives 
* As soon as client gadget gets associated with the power supply. it will produce 
* a warning demonstrating that condition is met. 
*/ 
private AsyncTask mBackgroundTask; 
@Override 
open boolean onStartJob(final jobParameters) { 
mBackgroundTask = new AsyncTask() { 
@Override 
ensured Object doInBackground(Object[] objects) { 
Setting = ReminderService.this; 
ReminderTasks.executeTasks(context, ReminderTasks.ACTION_CHARGING_REMINDER); 
Log.i("TAG", "onStartJob"); 
return invalid; 
} 
@Override 
secured void onPostExecute(Object o) { 
/* false means, that activity is finished. we would prefer not to reschedule it*/ 
jobFinished(jobParameters, false); 
Log.i("TAG", "onStartJob-OnPost"); 
} 
}; 
mBackgroundTask.execute(); 
return genuine; 
} 
@Override 
open boolean onStopJob(JobParameters jobParameters) { 
on the off chance that (mBackgroundTask != invalid) { 
mBackgroundTask.cancel(true); 
} 
Log.i("TAG", "onStopJob"); 
/* genuine means, we're not done, if you don't mind reschedule */ 
return genuine; 
} 
} 

在使用FireBase Job Dispatcher时,将使用三种策略。

onStartJob(JobParameters params( - 这是调用职业时将召唤的基本策略。它继续在基本字符串上运行。它将恢复一个布尔值,该布尔值告诉占领是否仍然存在。回归真实表明还有更多的工作要做。我们可以在活动完成后调用 jobDone((。

onStopJob(JobParameters params( - 当您的活动停止时,将考虑此技术。如果再也不会满足与活动相关的运行限制,则活动可能会因不同的原因而停止。它将恢复一个布尔值,该布尔值告诉是否应该再次尝试工作。如果真正返回的偶然机会,此时,系统将再次设置此活动以执行。

jobDone(JobParameters params, boolean needsReschedule( - 当工作被卸载到另一个字符串时,应该显式调用它。

相关内容

  • 没有找到相关文章

最新更新