Android Priority Job Queue (Job Manager):线程任务的容错重启机制(二)



Android Priority Job Queue (Job Manager):线程任务的容错重启机制(二)


附录文章4简单介绍了如何启动一个后台线程任务,Android Priority Job Queue (Job Manager)有一个重要的机制在附录文章4还没有体现:线程任务失败后重试、重启线程任务。这个机制在某些开发场景中非常常用,假设从网络中请求数据,但不幸的是网络出现故障,导致在线程体onRun内的代码失败,问题是失败该如何处理?这个时候,常规的做法是自己增加一堆状态字或者返回值加以控制,但是这样无疑使得开发者陷入繁琐的线程状态机的维护中来。
Android Priority Job Queue (Job Manager)完整的解决上上述问题:容错重试回滚任务机制。具体体现在onRun和shouldReRunOnThrowable,如果一个线程任务在onRun里面抛出异常失败,那么将自动进入shouldReRunOnThrowable,然后在shouldReRunOnThrowable会决定是否重试RetryConstraint.RETRY,或者干脆放弃任务RetryConstraint.CANCEL,这里面的重试或者放弃逻辑策略由开发者决定,比如一般的,可以由重试次数决定线程是否还有必要执行,假设一个任务重试了3次仍然不成功,那么就放弃(返RetryConstraint.CANCEL)。一旦放弃后,代码将进入onCanel内,在这里面处理善后事宜,这个机制有些类似Java的try-catch机制。
在附录文章4的基础上,仅仅修改MyJob.java代码演示上述机制:

  1. package zhangphil.app;  
  2.   
  3. import android.os.SystemClock;  
  4. import android.support.annotation.NonNull;  
  5. import android.support.annotation.Nullable;  
  6. import android.util.Log;  
  7.   
  8. import com.birbit.android.jobqueue.Job;  
  9. import com.birbit.android.jobqueue.Params;  
  10. import com.birbit.android.jobqueue.RetryConstraint;  
  11.   
  12. /** 
  13.  * Created by Phil on 2016/10/9. 
  14.  */  
  15. public class MyJob extends Job {  
  16.   
  17.     private String tag;  
  18.   
  19.     public MyJob(String tag) {  
  20.         super(new Params(500).requireNetwork().persist().groupBy(tag));  
  21.         this.tag = tag;  
  22.         Log.d(tag, ”初始化”);  
  23.     }  
  24.   
  25.     @Override  
  26.     public void onAdded() {  
  27.         Log.d(tag, ”添加任务”);  
  28.     }  
  29.   
  30.     //在这里面放置耗时的后台线程化任务  
  31.     @Override  
  32.     public void onRun() throws Throwable {  
  33.         Log.d(tag, ”开始运行…”);  
  34.   
  35.         SystemClock.sleep(2000);  
  36.   
  37.         //此处抛出异常后,jobqueue将立即自动进入shouldReRunOnThrowable  
  38.         throw new Exception();  
  39.   
  40.         //Log.d(tag, ”完成”);  
  41.     }  
  42.   
  43.     @Override  
  44.     protected RetryConstraint shouldReRunOnThrowable(@NonNull Throwable throwable, int runCount, int maxRunCount) {  
  45.         // An error occurred in onRun.  
  46.         // Return value determines whether this job should retry or cancel. You can further  
  47.         // specify a backoff strategy or change the job’s priority. You can also apply the  
  48.         // delay to the whole group to preserve jobs’ running order.  
  49.   
  50.         Log.d(tag, ”runCount: ” + runCount + “ maxRunCount: ” + maxRunCount);  
  51.   
  52.         //如果重试了3次仍未成功,那么就放弃执行任务  
  53.         if (runCount == 3)  
  54.             return RetryConstraint.CANCEL;  
  55.   
  56.         //这样的返回将导致onRun方法的再次执行,重试,重试将导致代码再次进入onRun。同时,runCount自加1  
  57.         return RetryConstraint.RETRY;  
  58.     }  
  59.   
  60.     //如果重试超过限定次数,将onCancel.  
  61.     //如果用户主动放弃删掉这个任务,也一样进入onCancel  
  62.     @Override  
  63.     protected void onCancel(int cancelReason, @Nullable Throwable throwable) {  
  64.         Log.d(tag, ”cancelReason:” + cancelReason);  
  65.     }  
  66. }  
package zhangphil.app;

import android.os.SystemClock;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;

import com.birbit.android.jobqueue.Job;
import com.birbit.android.jobqueue.Params;
import com.birbit.android.jobqueue.RetryConstraint;

/**
 * Created by Phil on 2016/10/9.
 */
public class MyJob extends Job {

    private String tag;

    public MyJob(String tag) {
        super(new Params(500).requireNetwork().persist().groupBy(tag));
        this.tag = tag;
        Log.d(tag, "初始化");
    }

    @Override
    public void onAdded() {
        Log.d(tag, "添加任务");
    }

    //在这里面放置耗时的后台线程化任务
    @Override
    public void onRun() throws Throwable {
        Log.d(tag, "开始运行...");

        SystemClock.sleep(2000);

        //此处抛出异常后,jobqueue将立即自动进入shouldReRunOnThrowable
        throw new Exception();

        //Log.d(tag, "完成");
    }

    @Override
    protected RetryConstraint shouldReRunOnThrowable(@NonNull Throwable throwable, int runCount, int maxRunCount) {
        // An error occurred in onRun.
        // Return value determines whether this job should retry or cancel. You can further
        // specify a backoff strategy or change the job's priority. You can also apply the
        // delay to the whole group to preserve jobs' running order.

        Log.d(tag, "runCount: " + runCount + " maxRunCount: " + maxRunCount);

        //如果重试了3次仍未成功,那么就放弃执行任务
        if (runCount == 3)
            return RetryConstraint.CANCEL;

        //这样的返回将导致onRun方法的再次执行,重试,重试将导致代码再次进入onRun。同时,runCount自加1
        return RetryConstraint.RETRY;
    }

    //如果重试超过限定次数,将onCancel.
    //如果用户主动放弃删掉这个任务,也一样进入onCancel
    @Override
    protected void onCancel(int cancelReason, @Nullable Throwable throwable) {
        Log.d(tag, "cancelReason:" + cancelReason);
    }
}


代码运行后Logcat完整输出:

  1. 10-10 15:51:39.488 16856-16856/zhangphil.app D/任务1: 初始化  
  2. 10-10 15:51:39.488 16856-16856/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] post message com.birbit.android.jobqueue.messaging.message.AddJobMessage@b1a3ff0  
  3. 10-10 15:51:39.488 16856-16856/zhangphil.app D/Activity: performCreate Call Injection manager  
  4. 10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085899495109636  
  5. 10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085899495109636  
  6. 10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null  
  7. 10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message com.birbit.android.jobqueue.messaging.message.AddJobMessage@b1a3ff0  
  8. 10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type ADD_JOB  
  9. 10-10 15:51:39.488 16856-16856/zhangphil.app I/InjectionManager: dispatchOnViewCreated > Target : zhangphil.app.MainActivity isFragment :false  
  10. 10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: added job class: MyJob priority: 500 delay: 0 group : 任务1 persistent: true  
  11. 10-10 15:51:39.528 16856-17353/zhangphil.app D/任务1: 添加任务  
  12. 10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: considering adding a new consumer. Should poke all waiting? false isRunning? true waiting workers? 0  
  13. 10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: check above load factor: totalCons:0 minCons:1 maxConsCount: 3, loadFactor 3 remainingJobs: 1 running holders: 0. isAbove:true  
  14. 10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: nothing has been poked. are we above load factor? true  
  15. 10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: adding another consumer  
  16. 10-10 15:51:39.538 16856-16856/zhangphil.app D/SecWifiDisplayUtil: Metadata value : SecSettings2  
  17. 10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085899551798802  
  18. 10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085899551798802  
  19. 10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null  
  20. 10-10 15:51:39.548 16856-16856/zhangphil.app D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindowDecorView{8602777&nbsp;I.E......&nbsp;R.....ID&nbsp;0,0-0,0}&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_ADD_JOB_2]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;joq&nbsp;idle.&nbsp;running:?&nbsp;true&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085899553556250&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;consumer&nbsp;manager&nbsp;on&nbsp;idle&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_JOB_CONSUMER_IDLE_4]&nbsp;post&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;will&nbsp;wait&nbsp;on&nbsp;the&nbsp;lock&nbsp;forever&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;Job&nbsp;queue&nbsp;idle.&nbsp;next&nbsp;job&nbsp;at:&nbsp;-9223372036854775808&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;add&nbsp;delayed&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.ConstraintChangeMessage@257dc4d&nbsp;at&nbsp;time&nbsp;-9223372036854775808&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;did&nbsp;on&nbsp;idle&nbsp;post&nbsp;a&nbsp;message?&nbsp;true&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;looking&nbsp;for&nbsp;next&nbsp;message&nbsp;at&nbsp;time&nbsp;1476085899555766615&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085899555766615&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_CONSTRAINT_CHANGE_5]&nbsp;post&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.ConstraintChangeMessage@257dc4d&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;next&nbsp;delayed&nbsp;job&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_CONSTRAINT_CHANGE_5]&nbsp;remove&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.ConstraintChangeMessage@257dc4d&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;consuming&nbsp;message&nbsp;of&nbsp;type&nbsp;CONSTRAINT_CHANGE&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;considering&nbsp;adding&nbsp;a&nbsp;new&nbsp;consumer.&nbsp;Should&nbsp;poke&nbsp;all&nbsp;waiting?&nbsp;true&nbsp;isRunning?&nbsp;true&nbsp;waiting&nbsp;workers?&nbsp;0&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;check&nbsp;above&nbsp;load&nbsp;factor:&nbsp;totalCons:1&nbsp;minCons:1&nbsp;maxConsCount:&nbsp;3,&nbsp;loadFactor&nbsp;3&nbsp;remainingJobs:&nbsp;1&nbsp;running&nbsp;holders:&nbsp;0.&nbsp;isAbove:false&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;nothing&nbsp;has&nbsp;been&nbsp;poked.&nbsp;are&nbsp;we&nbsp;above&nbsp;load&nbsp;factor?&nbsp;false&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;looking&nbsp;for&nbsp;next&nbsp;message&nbsp;at&nbsp;time&nbsp;1476085899559063386&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17359/zhangphil.app&nbsp;D/OpenGLRenderer:&nbsp;Use&nbsp;EGL_SWAP_BEHAVIOR_PRESERVED:&nbsp;true&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085899559063386&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;next&nbsp;delayed&nbsp;job&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_CONSTRAINT_CHANGE_5]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_ADD_JOB_2]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_JOB_CONSUMER_IDLE_4]&nbsp;remove&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.548&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;consuming&nbsp;message&nbsp;of&nbsp;type&nbsp;JOB_CONSUMER_IDLE&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.558&nbsp;16856-16856/zhangphil.app&nbsp;W/ActivityThread:&nbsp;AppLock&nbsp;checkAppLockState&nbsp;isAppLocked&nbsp;=&nbsp;false&nbsp;pkgName&nbsp;=&nbsp;zhangphil.app&nbsp;showWhenLocked&nbsp;=&nbsp;false&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;post&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;looking&nbsp;for&nbsp;next&nbsp;message&nbsp;at&nbsp;time&nbsp;1476085899571643802&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085899571643802&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;next&nbsp;delayed&nbsp;job&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_CONSTRAINT_CHANGE_5]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_ADD_JOB_2]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_JOB_CONSUMER_IDLE_4]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;joq&nbsp;idle.&nbsp;running:?&nbsp;true&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.568&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085899571733438&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.568&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;remove&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.568&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;running&nbsp;job&nbsp;JobHolder&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.568&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;running&nbsp;job&nbsp;MyJob&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.568&nbsp;16856-17358/zhangphil.app&nbsp;D/任务1:&nbsp;开始运行...&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;Job&nbsp;queue&nbsp;idle.&nbsp;next&nbsp;job&nbsp;at:&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.568&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;did&nbsp;on&nbsp;idle&nbsp;post&nbsp;a&nbsp;message?&nbsp;false&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.588&nbsp;16856-17359/zhangphil.app&nbsp;I/Adreno:&nbsp;QUALCOMM&nbsp;build&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0039a8c,&nbsp;I5bc0f577f9&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Build&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;08/03/16&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OpenGL&nbsp;ES&nbsp;Shader&nbsp;Compiler&nbsp;Version:&nbsp;XE031.08.00.02&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local&nbsp;Branch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remote&nbsp;Branch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;refs/tags/AU_LINUX_ANDROID_LA.HB.1.1.1.C1.06.00.00.165.223&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remote&nbsp;Branch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;NONE&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reconstruct&nbsp;Branch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;NOTHING&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.588&nbsp;16856-17359/zhangphil.app&nbsp;D/libEGL:&nbsp;eglInitialize&nbsp;EGLDisplay&nbsp;=&nbsp;0x7f93bfa188&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.588&nbsp;16856-17359/zhangphil.app&nbsp;I/OpenGLRenderer:&nbsp;Initialized&nbsp;EGL,&nbsp;version&nbsp;1.4&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.618&nbsp;16856-16856/zhangphil.app&nbsp;D/ViewRootImpl:&nbsp;MSG_RESIZED_REPORT:&nbsp;ci=Rect(0,&nbsp;96&nbsp;-&nbsp;0,&nbsp;0)&nbsp;vi=Rect(0,&nbsp;96&nbsp;-&nbsp;0,&nbsp;0)&nbsp;or=1&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:39.628&nbsp;16856-16856/zhangphil.app&nbsp;W/DisplayListCanvas:&nbsp;DisplayListCanvas&nbsp;is&nbsp;started&nbsp;on&nbsp;unbinded&nbsp;RenderNode&nbsp;(without&nbsp;mOwningView)&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:39.668&nbsp;16856-16856/zhangphil.app&nbsp;I/Timeline:&nbsp;Timeline:&nbsp;Activity_idle&nbsp;id:&nbsp;android.os.BinderProxy@87b6b1c&nbsp;time:249284264&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.568&nbsp;16856-17358/zhangphil.app&nbsp;E/zhangphil&nbsp;job:&nbsp;error&nbsp;while&nbsp;executing&nbsp;job&nbsp;zhangphil.app.MyJob@9eb605a&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.lang.Exception&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;zhangphil.app.MyJob.onRun(MyJob.java:38)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.birbit.android.jobqueue.Job.safeRun(Job.java:229)&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.birbit.android.jobqueue.ConsumerManagerConsumer.handleRunJob(ConsumerManager.java:398)  
  21.                                                                   at com.birbit.android.jobqueue.ConsumerManager Consumer.access 000(ConsumerManager.java:317)  
  22.                                                                   at com.birbit.android.jobqueue.ConsumerManager Consumer 2.handleMessage(ConsumerManager.java:345)  
  23.                                                                   at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36)  
  24.                                                                   at com.birbit.android.jobqueue.ConsumerManagerConsumer.run(ConsumerManager.java:380)&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.Thread.run(Thread.java:818)&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.568&nbsp;16856-17358/zhangphil.app&nbsp;D/任务1:&nbsp;runCount:&nbsp;1&nbsp;maxRunCount:&nbsp;20&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.568&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;safeRunResult&nbsp;for&nbsp;zhangphil.app.MyJob@9eb605a&nbsp;:&nbsp;false.&nbsp;re&nbsp;run:true.&nbsp;cancelled:&nbsp;false&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.578&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_RUN_JOB_RESULT_6]&nbsp;post&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.578&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085901581361354&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.578&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.578&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;looking&nbsp;for&nbsp;next&nbsp;message&nbsp;at&nbsp;time&nbsp;1476085901581436927&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.578&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;consumer&nbsp;manager&nbsp;on&nbsp;idle&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.578&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085901581436927&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.578&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;next&nbsp;delayed&nbsp;job&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.578&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_RUN_JOB_RESULT_6]&nbsp;remove&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.578&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;consuming&nbsp;message&nbsp;of&nbsp;type&nbsp;RUN_JOB_RESULT&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.578&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_JOB_CONSUMER_IDLE_4]&nbsp;post&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.578&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;will&nbsp;wait&nbsp;on&nbsp;the&nbsp;lock&nbsp;forever&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.598&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;reinsert&nbsp;job&nbsp;result&nbsp;true&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.598&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;looking&nbsp;for&nbsp;next&nbsp;message&nbsp;at&nbsp;time&nbsp;1476085901603381718&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.598&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085901603381718&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.598&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;next&nbsp;delayed&nbsp;job&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.598&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_RUN_JOB_RESULT_6]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.598&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_CONSTRAINT_CHANGE_5]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.598&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_ADD_JOB_2]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.598&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_JOB_CONSUMER_IDLE_4]&nbsp;remove&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.598&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;consuming&nbsp;message&nbsp;of&nbsp;type&nbsp;JOB_CONSUMER_IDLE&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;post&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;looking&nbsp;for&nbsp;next&nbsp;message&nbsp;at&nbsp;time&nbsp;1476085901615635572&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085901615635572&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;next&nbsp;delayed&nbsp;job&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_RUN_JOB_RESULT_6]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_CONSTRAINT_CHANGE_5]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_ADD_JOB_2]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.608&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085901615705104&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_JOB_CONSUMER_IDLE_4]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;joq&nbsp;idle.&nbsp;running:?&nbsp;true&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.608&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;remove&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.608&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;running&nbsp;job&nbsp;JobHolder&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.608&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;running&nbsp;job&nbsp;MyJob&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.608&nbsp;16856-17358/zhangphil.app&nbsp;D/任务1:&nbsp;开始运行...&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:41.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;Job&nbsp;queue&nbsp;idle.&nbsp;next&nbsp;job&nbsp;at:&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:41.618&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;did&nbsp;on&nbsp;idle&nbsp;post&nbsp;a&nbsp;message?&nbsp;false&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.608&nbsp;16856-17358/zhangphil.app&nbsp;E/zhangphil&nbsp;job:&nbsp;error&nbsp;while&nbsp;executing&nbsp;job&nbsp;zhangphil.app.MyJob@1ef2826&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.lang.Exception&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;zhangphil.app.MyJob.onRun(MyJob.java:38)&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.birbit.android.jobqueue.Job.safeRun(Job.java:229)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132)&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.birbit.android.jobqueue.ConsumerManagerConsumer.handleRunJob(ConsumerManager.java:398)  
  25.                                                                   at com.birbit.android.jobqueue.ConsumerManager Consumer.access 000(ConsumerManager.java:317)  
  26.                                                                   at com.birbit.android.jobqueue.ConsumerManager Consumer 2.handleMessage(ConsumerManager.java:345)  
  27.                                                                   at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36)  
  28.                                                                   at com.birbit.android.jobqueue.ConsumerManagerConsumer.run(ConsumerManager.java:380)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.Thread.run(Thread.java:818)&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.608&nbsp;16856-17358/zhangphil.app&nbsp;D/任务1:&nbsp;runCount:&nbsp;2&nbsp;maxRunCount:&nbsp;20&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.608&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;safeRunResult&nbsp;for&nbsp;zhangphil.app.MyJob@1ef2826&nbsp;:&nbsp;false.&nbsp;re&nbsp;run:true.&nbsp;cancelled:&nbsp;false&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.608&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_RUN_JOB_RESULT_6]&nbsp;post&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.608&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085903619928280&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.608&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;looking&nbsp;for&nbsp;next&nbsp;message&nbsp;at&nbsp;time&nbsp;1476085903620000572&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.608&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;consumer&nbsp;manager&nbsp;on&nbsp;idle&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085903620000572&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;next&nbsp;delayed&nbsp;job&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.608&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_RUN_JOB_RESULT_6]&nbsp;remove&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.618&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;consuming&nbsp;message&nbsp;of&nbsp;type&nbsp;RUN_JOB_RESULT&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.618&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_JOB_CONSUMER_IDLE_4]&nbsp;post&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.618&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;will&nbsp;wait&nbsp;on&nbsp;the&nbsp;lock&nbsp;forever&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.628&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;reinsert&nbsp;job&nbsp;result&nbsp;true&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.628&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;looking&nbsp;for&nbsp;next&nbsp;message&nbsp;at&nbsp;time&nbsp;1476085903636682603&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.628&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085903636682603&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.628&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;next&nbsp;delayed&nbsp;job&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.628&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_RUN_JOB_RESULT_6]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.628&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_CONSTRAINT_CHANGE_5]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.628&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_ADD_JOB_2]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.628&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_JOB_CONSUMER_IDLE_4]&nbsp;remove&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.628&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;consuming&nbsp;message&nbsp;of&nbsp;type&nbsp;JOB_CONSUMER_IDLE&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;post&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;looking&nbsp;for&nbsp;next&nbsp;message&nbsp;at&nbsp;time&nbsp;1476085903643573436&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085903643573436&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;next&nbsp;delayed&nbsp;job&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_RUN_JOB_RESULT_6]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_CONSTRAINT_CHANGE_5]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.638&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;flushing&nbsp;messages&nbsp;at&nbsp;time&nbsp;1476085903643628228&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_ADD_JOB_2]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[queue_JOB_CONSUMER_IDLE_4]&nbsp;remove&nbsp;message&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;joq&nbsp;idle.&nbsp;running:?&nbsp;true&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.638&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[consumer_3]&nbsp;remove&nbsp;message&nbsp;com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.638&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;running&nbsp;job&nbsp;JobHolder&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.638&nbsp;16856-17358/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;running&nbsp;job&nbsp;MyJob&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.638&nbsp;16856-17358/zhangphil.app&nbsp;D/任务1:&nbsp;开始运行...&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;Job&nbsp;queue&nbsp;idle.&nbsp;next&nbsp;job&nbsp;at:&nbsp;null&nbsp;&nbsp;</span></li><li class="alt"><span>10-10&nbsp;15:51:43.638&nbsp;16856-17353/zhangphil.app&nbsp;D/zhangphil&nbsp;job:&nbsp;[priority_mq]&nbsp;did&nbsp;on&nbsp;idle&nbsp;post&nbsp;a&nbsp;message?&nbsp;false&nbsp;&nbsp;</span></li><li class=""><span>10-10&nbsp;15:51:45.638&nbsp;16856-17358/zhangphil.app&nbsp;E/zhangphil&nbsp;job:&nbsp;error&nbsp;while&nbsp;executing&nbsp;job&nbsp;zhangphil.app.MyJob@12572bd&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.lang.Exception&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;zhangphil.app.MyJob.onRun(MyJob.java:38)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.birbit.android.jobqueue.Job.safeRun(Job.java:229)&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.birbit.android.jobqueue.ConsumerManagerConsumer.handleRunJob(ConsumerManager.java:398)  
  29.                                                                   at com.birbit.android.jobqueue.ConsumerManager Consumer.access 000(ConsumerManager.java:317)  
  30.                                                                   at com.birbit.android.jobqueue.ConsumerManager Consumer 2.handleMessage(ConsumerManager.java:345)  
  31.                                                                   at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36)  
  32.                                                                   at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:380)  
  33.                                                                   at java.lang.Thread.run(Thread.java:818)  
  34. 10-10 15:51:45.638 16856-17358/zhangphil.app D/任务1: runCount: 3 maxRunCount: 20  
  35. 10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: safeRunResult for zhangphil.app.MyJob@12572bd : false. re run:false. cancelled: false  
  36. 10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] post message com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b  
  37. 10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: flushing messages at time 1476085905647085571  
  38. 10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] remove message null  
  39. 10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: consumer manager on idle  
  40. 10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085905647246300  
  41. 10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085905647246300  
  42. 10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null  
  43. 10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b  
  44. 10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type RUN_JOB_RESULT  
  45. 10-10 15:51:45.638 16856-17353/zhangphil.app D/任务1: cancelReason:5  
  46. 10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] post message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4  
  47. 10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] will wait on the lock forever  
  48. 10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085905666501300  
  49. 10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085905666501300  
  50. 10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null  
  51. 10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message null  
  52. 10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null  
  53. 10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null  
  54. 10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4  
  55. 10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type JOB_CONSUMER_IDLE  
  56. 10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: keep alive: 1476086025647041248  
  57. 10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: Consumer idle, will kill? false . isRunning: true  
  58. 10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085905680193019  
  59. 10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085905680193019  
  60. 10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null  
  61. 10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message null  
  62. 10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null  
  63. 10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null  
  64. 10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message null  
  65. 10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: joq idle. running:? true  
  66. 10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: Job queue idle. next job at: null  
  67. 10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] did on idle post a message? false  
10-10 15:51:39.488 16856-16856/zhangphil.app D/任务1: 初始化
10-10 15:51:39.488 16856-16856/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] post message com.birbit.android.jobqueue.messaging.message.AddJobMessage@b1a3ff0
10-10 15:51:39.488 16856-16856/zhangphil.app D/Activity: performCreate Call Injection manager
10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085899495109636
10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085899495109636
10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message com.birbit.android.jobqueue.messaging.message.AddJobMessage@b1a3ff0
10-10 15:51:39.488 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type ADD_JOB
10-10 15:51:39.488 16856-16856/zhangphil.app I/InjectionManager: dispatchOnViewCreated > Target : zhangphil.app.MainActivity isFragment :false
10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: added job class: MyJob priority: 500 delay: 0 group : 任务1 persistent: true
10-10 15:51:39.528 16856-17353/zhangphil.app D/任务1: 添加任务
10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: considering adding a new consumer. Should poke all waiting? false isRunning? true waiting workers? 0
10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: check above load factor: totalCons:0 minCons:1 maxConsCount: 3, loadFactor 3 remainingJobs: 1 running holders: 0. isAbove:true
10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: nothing has been poked. are we above load factor? true
10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: adding another consumer
10-10 15:51:39.538 16856-16856/zhangphil.app D/SecWifiDisplayUtil: Metadata value : SecSettings2
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085899551798802
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085899551798802
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:39.548 16856-16856/zhangphil.app D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{8602777 I.E...... R.....ID 0,0-0,0}
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: joq idle. running:? true
10-10 15:51:39.548 16856-17358/zhangphil.app D/zhangphil job: flushing messages at time 1476085899553556250
10-10 15:51:39.548 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] remove message null
10-10 15:51:39.548 16856-17358/zhangphil.app D/zhangphil job: consumer manager on idle
10-10 15:51:39.548 16856-17358/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] post message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4
10-10 15:51:39.548 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] will wait on the lock forever
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: Job queue idle. next job at: -9223372036854775808
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: add delayed message com.birbit.android.jobqueue.messaging.message.ConstraintChangeMessage@257dc4d at time -9223372036854775808
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] did on idle post a message? true
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085899555766615
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085899555766615
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] post message com.birbit.android.jobqueue.messaging.message.ConstraintChangeMessage@257dc4d
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message com.birbit.android.jobqueue.messaging.message.ConstraintChangeMessage@257dc4d
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type CONSTRAINT_CHANGE
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: considering adding a new consumer. Should poke all waiting? true isRunning? true waiting workers? 0
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: check above load factor: totalCons:1 minCons:1 maxConsCount: 3, loadFactor 3 remainingJobs: 1 running holders: 0. isAbove:false
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: nothing has been poked. are we above load factor? false
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085899559063386
10-10 15:51:39.548 16856-17359/zhangphil.app D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085899559063386
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4
10-10 15:51:39.548 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type JOB_CONSUMER_IDLE
10-10 15:51:39.558 16856-16856/zhangphil.app W/ActivityThread: AppLock checkAppLockState isAppLocked = false pkgName = zhangphil.app showWhenLocked = false
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: [consumer_3] post message com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085899571643802
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085899571643802
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message null
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: joq idle. running:? true
10-10 15:51:39.568 16856-17358/zhangphil.app D/zhangphil job: flushing messages at time 1476085899571733438
10-10 15:51:39.568 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] remove message com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413
10-10 15:51:39.568 16856-17358/zhangphil.app D/zhangphil job: running job JobHolder
10-10 15:51:39.568 16856-17358/zhangphil.app D/zhangphil job: running job MyJob
10-10 15:51:39.568 16856-17358/zhangphil.app D/任务1: 开始运行...
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: Job queue idle. next job at: null
10-10 15:51:39.568 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] did on idle post a message? false
10-10 15:51:39.588 16856-17359/zhangphil.app I/Adreno: QUALCOMM build                   : 0039a8c, I5bc0f577f9
                                                       Build Date                       : 08/03/16
                                                       OpenGL ES Shader Compiler Version: XE031.08.00.02
                                                       Local Branch                     : 
                                                       Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.HB.1.1.1.C1.06.00.00.165.223
                                                       Remote Branch                    : NONE
                                                       Reconstruct Branch               : NOTHING
10-10 15:51:39.588 16856-17359/zhangphil.app D/libEGL: eglInitialize EGLDisplay = 0x7f93bfa188
10-10 15:51:39.588 16856-17359/zhangphil.app I/OpenGLRenderer: Initialized EGL, version 1.4
10-10 15:51:39.618 16856-16856/zhangphil.app D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1
10-10 15:51:39.628 16856-16856/zhangphil.app W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
10-10 15:51:39.668 16856-16856/zhangphil.app I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@87b6b1c time:249284264
10-10 15:51:41.568 16856-17358/zhangphil.app E/zhangphil job: error while executing job zhangphil.app.MyJob@9eb605a
                                                              java.lang.Exception
                                                                  at zhangphil.app.MyJob.onRun(MyJob.java:38)
                                                                  at com.birbit.android.jobqueue.Job.safeRun(Job.java:229)
                                                                  at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:398)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:317)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:345)
                                                                  at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:380)
                                                                  at java.lang.Thread.run(Thread.java:818)
10-10 15:51:41.568 16856-17358/zhangphil.app D/任务1: runCount: 1 maxRunCount: 20
10-10 15:51:41.568 16856-17358/zhangphil.app D/zhangphil job: safeRunResult for zhangphil.app.MyJob@9eb605a : false. re run:true. cancelled: false
10-10 15:51:41.578 16856-17358/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] post message com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b
10-10 15:51:41.578 16856-17358/zhangphil.app D/zhangphil job: flushing messages at time 1476085901581361354
10-10 15:51:41.578 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] remove message null
10-10 15:51:41.578 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085901581436927
10-10 15:51:41.578 16856-17358/zhangphil.app D/zhangphil job: consumer manager on idle
10-10 15:51:41.578 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085901581436927
10-10 15:51:41.578 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:41.578 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b
10-10 15:51:41.578 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type RUN_JOB_RESULT
10-10 15:51:41.578 16856-17358/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] post message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4
10-10 15:51:41.578 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] will wait on the lock forever
10-10 15:51:41.598 16856-17353/zhangphil.app D/zhangphil job: reinsert job result true
10-10 15:51:41.598 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085901603381718
10-10 15:51:41.598 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085901603381718
10-10 15:51:41.598 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:41.598 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message null
10-10 15:51:41.598 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null
10-10 15:51:41.598 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null
10-10 15:51:41.598 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4
10-10 15:51:41.598 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type JOB_CONSUMER_IDLE
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: [consumer_3] post message com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085901615635572
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085901615635572
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message null
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null
10-10 15:51:41.608 16856-17358/zhangphil.app D/zhangphil job: flushing messages at time 1476085901615705104
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message null
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: joq idle. running:? true
10-10 15:51:41.608 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] remove message com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413
10-10 15:51:41.608 16856-17358/zhangphil.app D/zhangphil job: running job JobHolder
10-10 15:51:41.608 16856-17358/zhangphil.app D/zhangphil job: running job MyJob
10-10 15:51:41.608 16856-17358/zhangphil.app D/任务1: 开始运行...
10-10 15:51:41.608 16856-17353/zhangphil.app D/zhangphil job: Job queue idle. next job at: null
10-10 15:51:41.618 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] did on idle post a message? false
10-10 15:51:43.608 16856-17358/zhangphil.app E/zhangphil job: error while executing job zhangphil.app.MyJob@1ef2826
                                                              java.lang.Exception
                                                                  at zhangphil.app.MyJob.onRun(MyJob.java:38)
                                                                  at com.birbit.android.jobqueue.Job.safeRun(Job.java:229)
                                                                  at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:398)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:317)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:345)
                                                                  at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:380)
                                                                  at java.lang.Thread.run(Thread.java:818)
10-10 15:51:43.608 16856-17358/zhangphil.app D/任务1: runCount: 2 maxRunCount: 20
10-10 15:51:43.608 16856-17358/zhangphil.app D/zhangphil job: safeRunResult for zhangphil.app.MyJob@1ef2826 : false. re run:true. cancelled: false
10-10 15:51:43.608 16856-17358/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] post message com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b
10-10 15:51:43.608 16856-17358/zhangphil.app D/zhangphil job: flushing messages at time 1476085903619928280
10-10 15:51:43.608 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] remove message null
10-10 15:51:43.608 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085903620000572
10-10 15:51:43.608 16856-17358/zhangphil.app D/zhangphil job: consumer manager on idle
10-10 15:51:43.608 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085903620000572
10-10 15:51:43.608 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:43.608 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b
10-10 15:51:43.618 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type RUN_JOB_RESULT
10-10 15:51:43.618 16856-17358/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] post message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4
10-10 15:51:43.618 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] will wait on the lock forever
10-10 15:51:43.628 16856-17353/zhangphil.app D/zhangphil job: reinsert job result true
10-10 15:51:43.628 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085903636682603
10-10 15:51:43.628 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085903636682603
10-10 15:51:43.628 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:43.628 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message null
10-10 15:51:43.628 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null
10-10 15:51:43.628 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null
10-10 15:51:43.628 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4
10-10 15:51:43.628 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type JOB_CONSUMER_IDLE
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: [consumer_3] post message com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085903643573436
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085903643573436
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message null
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null
10-10 15:51:43.638 16856-17358/zhangphil.app D/zhangphil job: flushing messages at time 1476085903643628228
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message null
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: joq idle. running:? true
10-10 15:51:43.638 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] remove message com.birbit.android.jobqueue.messaging.message.RunJobMessage@725c413
10-10 15:51:43.638 16856-17358/zhangphil.app D/zhangphil job: running job JobHolder
10-10 15:51:43.638 16856-17358/zhangphil.app D/zhangphil job: running job MyJob
10-10 15:51:43.638 16856-17358/zhangphil.app D/任务1: 开始运行...
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: Job queue idle. next job at: null
10-10 15:51:43.638 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] did on idle post a message? false
10-10 15:51:45.638 16856-17358/zhangphil.app E/zhangphil job: error while executing job zhangphil.app.MyJob@12572bd
                                                              java.lang.Exception
                                                                  at zhangphil.app.MyJob.onRun(MyJob.java:38)
                                                                  at com.birbit.android.jobqueue.Job.safeRun(Job.java:229)
                                                                  at com.birbit.android.jobqueue.JobHolder.safeRun(JobHolder.java:132)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer.handleRunJob(ConsumerManager.java:398)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer.access$000(ConsumerManager.java:317)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer$2.handleMessage(ConsumerManager.java:345)
                                                                  at com.birbit.android.jobqueue.messaging.SafeMessageQueue.consume(SafeMessageQueue.java:36)
                                                                  at com.birbit.android.jobqueue.ConsumerManager$Consumer.run(ConsumerManager.java:380)
                                                                  at java.lang.Thread.run(Thread.java:818)
10-10 15:51:45.638 16856-17358/zhangphil.app D/任务1: runCount: 3 maxRunCount: 20
10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: safeRunResult for zhangphil.app.MyJob@12572bd : false. re run:false. cancelled: false
10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] post message com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b
10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: flushing messages at time 1476085905647085571
10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] remove message null
10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: consumer manager on idle
10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085905647246300
10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085905647246300
10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message com.birbit.android.jobqueue.messaging.message.RunJobResultMessage@2fa28b
10-10 15:51:45.638 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type RUN_JOB_RESULT
10-10 15:51:45.638 16856-17353/zhangphil.app D/任务1: cancelReason:5
10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] post message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4
10-10 15:51:45.638 16856-17358/zhangphil.app D/zhangphil job: [consumer_3] will wait on the lock forever
10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085905666501300
10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085905666501300
10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message null
10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null
10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null
10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message com.birbit.android.jobqueue.messaging.message.JobConsumerIdleMessage@a013fe4
10-10 15:51:45.658 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] consuming message of type JOB_CONSUMER_IDLE
10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: keep alive: 1476086025647041248
10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: Consumer idle, will kill? false . isRunning: true
10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] looking for next message at time 1476085905680193019
10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: flushing messages at time 1476085905680193019
10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] next delayed job null
10-10 15:51:45.668 16856-17353/zhangphil.app D/zhangphil job: [queue_RUN_JOB_RESULT_6] remove message null
10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: [queue_CONSTRAINT_CHANGE_5] remove message null
10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: [queue_ADD_JOB_2] remove message null
10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: [queue_JOB_CONSUMER_IDLE_4] remove message null
10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: joq idle. running:? true
10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: Job queue idle. next job at: null
10-10 15:51:45.678 16856-17353/zhangphil.app D/zhangphil job: [priority_mq] did on idle post a message? false



上述完整Logcat输出显示了代码在onRun里面抛出异常然后容错回滚机制发挥作用重启了任务,过滤“任务”后精简的关键Logcat输出:

  1. 10-10 15:51:39.488 16856-16856/zhangphil.app D/任务1: 初始化  
  2. 10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: added job class: MyJob priority: 500 delay: 0 group : 任务1 persistent: true  
  3. 10-10 15:51:39.528 16856-17353/zhangphil.app D/任务1: 添加任务  
  4. 10-10 15:51:39.568 16856-17358/zhangphil.app D/任务1: 开始运行…  
  5. 10-10 15:51:41.568 16856-17358/zhangphil.app D/任务1: runCount: 1 maxRunCount: 20  
  6. 10-10 15:51:41.608 16856-17358/zhangphil.app D/任务1: 开始运行…  
  7. 10-10 15:51:43.608 16856-17358/zhangphil.app D/任务1: runCount: 2 maxRunCount: 20  
  8. 10-10 15:51:43.638 16856-17358/zhangphil.app D/任务1: 开始运行…  
  9. 10-10 15:51:45.638 16856-17358/zhangphil.app D/任务1: runCount: 3 maxRunCount: 20  
  10. 10-10 15:51:45.638 16856-17353/zhangphil.app D/任务1: cancelReason:5  
10-10 15:51:39.488 16856-16856/zhangphil.app D/任务1: 初始化
10-10 15:51:39.528 16856-17353/zhangphil.app D/zhangphil job: added job class: MyJob priority: 500 delay: 0 group : 任务1 persistent: true
10-10 15:51:39.528 16856-17353/zhangphil.app D/任务1: 添加任务
10-10 15:51:39.568 16856-17358/zhangphil.app D/任务1: 开始运行...
10-10 15:51:41.568 16856-17358/zhangphil.app D/任务1: runCount: 1 maxRunCount: 20
10-10 15:51:41.608 16856-17358/zhangphil.app D/任务1: 开始运行...
10-10 15:51:43.608 16856-17358/zhangphil.app D/任务1: runCount: 2 maxRunCount: 20
10-10 15:51:43.638 16856-17358/zhangphil.app D/任务1: 开始运行...
10-10 15:51:45.638 16856-17358/zhangphil.app D/任务1: runCount: 3 maxRunCount: 20
10-10 15:51:45.638 16856-17353/zhangphil.app D/任务1: cancelReason:5


附录:
【1】《Java线程池:ExecutorService,Executors》链接地址:http://blog.csdn.net/zhangphil/article/details/43898637  
【2】《Java线程池及Future、Callable获得线程返回结果【Java线程池系列2】》链接地址:http://blog.csdn.net/zhangphil/article/details/49701219
【3】《Java线程池之FutureTask【Java线程池系列3】》链接地址:http://blog.csdn.net/zhangphil/article/details/49702751
【4】《Android Priority Job Queue (Job Manager)(一)》链接地址:http://blog.csdn.net/zhangphil/article/details/52777196

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值