[关闭]
@zongwu 2017-01-11T08:15:13.000000Z 字数 2042 阅读 393

Job Queue的最佳实践

技术交流


统计当前job的闲置率

  1. jobManager.addCallback(new JobManagerCallbackAdapter() {
  2. @Override
  3. public void onJobAdded(@NonNull Job job) {
  4. jobCount.incrementAndGet();
  5. }
  6. @Override
  7. public void onDone(@NonNull Job job) {
  8. if (jobCount.decrementAndGet() == 0 && resourceCallbacks[0] != null) {
  9. resourceCallbacks[0].onTransitionToIdle();
  10. }
  11. }
  12. });

配置Job Manager

  1. Configuration.Builder builder = new Configuration.Builder(this)
  2. .customLogger(new CustomLogger() {
  3. private static final String TAG = "JOBS";
  4. @Override
  5. public boolean isDebugEnabled() {
  6. return true;
  7. }
  8. @Override
  9. public void d(String text, Object... args) {
  10. Log.d(TAG, String.format(text, args));
  11. }
  12. @Override
  13. public void e(Throwable t, String text, Object... args) {
  14. Log.e(TAG, String.format(text, args), t);
  15. }
  16. @Override
  17. public void e(String text, Object... args) {
  18. Log.e(TAG, String.format(text, args));
  19. }
  20. @Override
  21. public void v(String text, Object... args) {
  22. }
  23. })
  24. .minConsumerCount(1)//至少保留一个消费者
  25. .maxConsumerCount(3)//最多保留三个消费者
  26. .loadFactor(3)//每个消费者最多可分配3个任务
  27. .consumerKeepAlive(120);//保活时间设置为2分钟

com.birbit.android.jobqueue.Params

标签设计

附加(attach)

指附加到某容器,这些容器可以是ActivityFragmentServiceBusiness(指定业务模块)、甚至Application等。指代附加到指定区块生命周期内,如果超过该生命周期则应取消该JOB。

目前设计的维度包括:

  1. Activity(组件维度)
  2. Fragment(组件维度)
  3. Service(组件维度)
  4. Business(逻辑块维度)

当JOB被标记为:activity_LoginActivity,则在LoginActivity被关闭时,需要清空所有标记 activity_LoginActivity 的JOB。

当JOB被标记为:business_login,则当 登录 逻辑块退出/关闭时,需要清空所有标记 business_login 的JOB。

依赖(depend)

指某JOB的执行需要依赖某些外部条件。

最典型的例子是登录:当登录成功后才可以调用获取资料的JOB。若程序主动/被动登出,则应取消所有需要依赖登录的JOB。

目前设计的依赖维度包括:

  1. Clerk(店员登录)
  2. Customer(委托店员登录用户帐号)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注