JobScheduler多次调用onStartJob()
,尽管作业已完成。如果我安排一项工作,等到它完成,一切都很好。但是,如果我同时调度两个或多个具有不同ID的作业,那么在调用jobFinished()
之后,再次调用onStartJob()<-code>。
例如,我计划作业1和作业2的参数完全相同,除了ID,那么顺序是:
作业1和作业2的onStartJob()
这两个作业都完成了,因此将为它们调用jobFinished()
之后,对具有相同ID的两个作业再次调用onStartJob()
我的工作很基础,并不复杂。
public class MyJobService extends JobService {
@Override
public boolean onStartJob(final JobParameters params) {
new Thread(new Runnable() {
@Override
public void run() {
try {
// do something
} finally {
// do not reschedule
jobFinished(params, false);
}
}
}).start();
// yes, job running in the background
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
// mark my background task as stopped
// do not reschedule
return false;
}
}
我是这样安排工作的
JobInfo jobInfo = createBaseBuilder(request)
.setMinimumLatency(2_000L)
.setOverrideDeadline(4_000L)
.setRequiresCharging(false)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.build();
int scheduleResult = mJobScheduler.schedule(jobInfo);
// is always success
我不知道怎么了。
这是AndroidLollipop和Marshmallow的问题。正如马修·威廉姆斯在这里解释的那样,它在牛轧糖中被修复了
我认为这与此处报告的Android错误有关,该错误显然已针对Android N修复,但将出现在早期版本中。
OP 正在使用 setOverrideDeadline()。
我对上面链接的帖子中报告的问题的理解是,如果在覆盖截止时间触发时作业正在运行,则会导致作业被安排再次运行。
因此,建议是确保覆盖在作业计划之前(不确定如何实现)或完成后触发。两者似乎都不特别令人满意,但至少在Android N中似乎已经修复了。
我猜这是由未决的作业引起的,所以我在服务启动后调用mJobScheduler.cancelAll(),问题解决了。
我的主要活动是装载不同的碎片。此外,可以从MainActivity打开设置-activity。 如果用户只是在片段之间切换,那就万事大吉了。 当打开设置-activity并返回MainActivity时,onResume和onPause会被调用两次。如果用户打开设置-activity并再次返回MainActivity,onResume和onPause将被调用三次。每次用户打开“设置-activit
我试图为BillingClient v.2.2.0和Kotlin协同程序编写一个包装: 正如您所见,当我试图查询购买或购买时,我确保客户已经准备好。但在生产中存在许多错误: 我试图了解问题的原因,得到了if将被多次调用。可能存在异常。我一直想知道这是怎么可能的,因为我每次调用都会创建新的侦听器?我无法在emulator或测试设备上重现此问题。有人能解释一下这里发生了什么,以及如何解决吗?
我正在尝试在像这样: 然后在我的它呈现: 我正在将我的fetch记录到控制台中,它被调用了三次。流程是我在登录页面上(加载时挂载一次),我登录,它将我重定向到自己呈现的主页。此时,我在控制台中看到:
我有一个代码,在那里我处理多个线程。一个线程等待它所依赖的其他一些线程的执行。 线程的运行代码如下所示 很少有其他线程等待这个线程在相同的方法中完成执行,如图所示,通过调用join()来执行run()。 假设这个线程依赖于另外三个线程,它正在等待它们在thread.join()中完成执行。即nameList大小为3,但此线程也执行了3次操作。它在for循环的外部。 我用另一种方法启动这个线程,比如
问题内容: 我正在使用Swift开发iOS通用应用程序,使用自动布局功能,并且仅支持纵向模式。 我发现打过多次。而是在启动MyApp时仅被调用一次。 为什么要多次调用?是否会按顺序对每个(,等)进行约束? 任何信息将不胜感激。 问题答案: 仅被调用一次:需要加载视图时。 ,但是,每个运行循环都会在已存在或已对其调用的任何视图上调用一次- 这包括每当将子视图添加到视图,滚动,调整大小等时。
我在我的应用程序中实现GCM。我已经按照GCM教程中给出的所有步骤从developer.android.com 我能够成功地从GCM获得注册ID,并且我正在将此ID传递给我的应用程序服务器。因此,成功地执行了注册步骤。 现在,当我的应用服务器向我的设备发送PUSH消息时,服务器将获得SUCCESS=8 FAILURE=0等消息,即:服务器成功发送消息,但OnMessage被调用8次取决于成功值。