@zongwu
2017-01-11T08:15:13.000000Z
字数 2042
阅读 393
技术交流
jobManager.addCallback(new JobManagerCallbackAdapter() {
@Override
public void onJobAdded(@NonNull Job job) {
jobCount.incrementAndGet();
}
@Override
public void onDone(@NonNull Job job) {
if (jobCount.decrementAndGet() == 0 && resourceCallbacks[0] != null) {
resourceCallbacks[0].onTransitionToIdle();
}
}
});
Configuration.Builder builder = new Configuration.Builder(this)
.customLogger(new CustomLogger() {
private static final String TAG = "JOBS";
@Override
public boolean isDebugEnabled() {
return true;
}
@Override
public void d(String text, Object... args) {
Log.d(TAG, String.format(text, args));
}
@Override
public void e(Throwable t, String text, Object... args) {
Log.e(TAG, String.format(text, args), t);
}
@Override
public void e(String text, Object... args) {
Log.e(TAG, String.format(text, args));
}
@Override
public void v(String text, Object... args) {
}
})
.minConsumerCount(1)//至少保留一个消费者
.maxConsumerCount(3)//最多保留三个消费者
.loadFactor(3)//每个消费者最多可分配3个任务
.consumerKeepAlive(120);//保活时间设置为2分钟
public Params setGroupId(String groupId)
设置分组id,在同一个分组内的jobs会以顺序执行。若没设置分组id,则默认分组。
public Params setSingleId(String singleId)
设置单例id,但存在另外一个相同单例id的job并且这个job也处于就绪状态。则这个job将在调用
Job#onAdded()
方法后立即调用Job#onCancel()
方法,这意味着只有前一个Job能得到运行机会。
public Params setPersistent(boolean persistent)
设置序列化,一旦设置job序列化,需要确保你的job实现了序列化接口。
public Params setDelayMs(long delayMs)
设置延迟ms,设置job延迟
delayMs
毫秒后执行。
public Params setRequiresNetwork(boolean requiresNetwork)
设置网络依赖,如果设置了
requireUnmeteredNetwork()
则其他设置网络依赖的方法均无效。
public Params addTags(String... newTags)
添加job的标签,一个job可以被添加多个标签。标签最初的设计是用于查询与取消job,以后会相应的扩展。
public Params(int priority)
设置方法优先级,越高越先被执行。
指附加到某容器,这些容器可以是Activity
、Fragment
、Service
、Business
(指定业务模块)、甚至Application
等。指代附加到指定区块生命周期内,如果超过该生命周期则应取消该JOB。
目前设计的维度包括:
当JOB被标记为:activity_LoginActivity,则在LoginActivity被关闭时,需要清空所有标记 activity_LoginActivity 的JOB。
当JOB被标记为:business_login,则当 登录 逻辑块退出/关闭时,需要清空所有标记 business_login 的JOB。
指某JOB的执行需要依赖某些外部条件。
最典型的例子是登录:当登录成功后才可以调用获取资料的JOB。若程序主动/被动登出,则应取消所有需要依赖登录的JOB。
目前设计的依赖维度包括: