Android Firebase Jobdispatcher无法启动

时间:2018-09-13 06:40:05

标签: android firebase-job-dispatcher

那边的Android怪胎

我正在开发一个使用'com.firebase:firebase-jobdispatcher:0.8.5'来调度作业的应用程序。但是作业无法在经过测试的设备中执行。

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

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

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

下面包含dumpsys日志,如果有人有任何评论可以阐明此问题。 :)


(预定)com.mypackage.testapp / com.firebase.jobdispatcher.GooglePlayReceiver {u = 0 tag =“ test-sync-job” trigger = window {start = 300s,end = 360s,最早= -459s,最新= -399s}要求= [NET_ANY]属性= [预定] =-759s last_run =不适用jid =不适用status = READY_BATTERY_LOW 重试= 0 client_lib = FIREBASE_JOB_DISPATCHER-1}

尚未运行。


预先感谢:)

1 个答案:

答案 0 :(得分:-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将确定制作的Job目前准备执行。

需要安排约束条件,并牢记执行已完成活动的最终目标。当然,它没有填充,这意味着在启动JobTrigger时Job将保持运行。

RetryStrategy负责处理令人失望的情况。默认值采用指数退避程序。

一生,表明应该保持计划的活动的季节。

默认值是保持作业计划到下一次引导。

包装用于客户提供的其他物品。这是一个任意参数。

一个布尔值表明作业是否应该重新哈希。默认值为false,这意味着计划的作业将仅执行一次。

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

带有或没有类似标签的标签。此布尔值横幅的默认激励为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)-这是调用一项职业时会想到的基本策略。它继续在基本字符串上运行。它将恢复一个布尔值,该布尔值指示是否剩余职业。退货正品表明还有更多工作要做。活动结束后,我们可以调用jobFinished()。

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

jobFinished(JobParameters params,boolean needsReschedule)-当工作已卸载到另一个字符串时,应该明确地调用它。