Android Priority Job Queue官方地址:https://github.com/yigit/android-priority-jobqueue
package tsou.com.simple.jobqueuetest; import android.app.Application; import android.util.Log; import com.birbit.android.jobqueue.JobManager; import com.birbit.android.jobqueue.config.Configuration; import com.birbit.android.jobqueue.log.CustomLogger; /**
*/ public class MyApplication extends Application { private static MyApplication instance; private JobManager jobManager; @Override public void onCreate() { super.onCreate(); instance = this; // 配置JobMananger configureJobManager(); } public static MyApplication getInstance() { return instance; } public JobManager getJobManager() { return jobManager; } /**
*/ private void configureJobManager() { Configuration configuration = new Configuration.Builder(this) //日志设置,便于用户查看任务队列的工作信息 .customLogger(new CustomLogger() { @Override public boolean isDebugEnabled() { return true; } @Override public void d(String text, Object... args) { Log.d("huangxiaoguo", String.format(text, args)); } @Override public void e(Throwable t, String text, Object... args) { Log.e("huangxiaoguo", String.format(text, args)); } @Override public void e(String text, Object... args) { Log.e("huangxiaoguo", String.format(text, args)); } @Override public void v(String text, Object... args) { Log.v("huangxiaoguo", String.format(text, args)); } }) //最少开启的线程 .minConsumerCount(3) //最多开启的线程 .maxConsumerCount(3) //一个Thread设置多3个任务 .loadFactor(3) //设置线程在没有任务的情况下保持存活的时长,以秒为单位 .consumerKeepAlive(120) .build(); jobManager = new JobManager(configuration); } }
package tsou.com.simple.jobqueuetest.job; 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.Pa 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》 浏览器打开:qq.cn.hn/FTe 开源分享 rams; import com.birbit.android.jobqueue.RetryConstraint; /**
*/ public class MyJob extends Job { private String mPriorty; public MyJob(String priority) { /**
*
*
*
*delayInMs(long delayMs):设置延迟时间,ms为单位,在该时间之后再放入任务队列中。
*/ super(new Params(Integer.parseInt(priority)) .requireNetwork() .persist() .addTags("huangxiaoguo")); this.mPriorty = priority; Log.e("huangxiaoguo", mPriorty + "初始化"); } @Override public void onAdded() { //任务加入队列并被保存在硬盘上,定义此时要处理的逻辑; Log.e("huangxiaoguo", mPriorty + "==>onAdded任务加入队列"); } @Override public void onRun() throws Throwable { //任务开始执执行,在此定义任务的主题逻辑,当执行完毕后,任务将被从任务队列中删除; Log.e("huangxiaoguo", mPriorty + "==>onRun任务开始执行"); SystemClock.sleep(15000); } @Override protected void onCancel(int cancelReason, @Nullable Throwable throwable) { //任务取消的时候要执行的逻辑; Log.e("huangxiaoguo", mPriorty + "==>onCancel任务取消"); } @Override protected RetryConstraint shouldReRunOnThrowable(@NonNull Throwable throwable, int runCount, int maxRunCount) { /**
*该函数返回Job类在执行发生异常时的应对策略, *是重新执行还是取消,或者是一定时间之后再尝试。 */ //RetryConstraint的自带策略,立刻重新尝试执行策略, // 直到执行成功或者尝试次数达到最大(18次); // return RetryConstraint.RETRY; //RetryConstraint的自带策略,取消当前任务的执行; //return RetryConstraint.CANCEL; |
|
来自: 新用户6594HGU4 > 《待分类》