前言
之前已经讲过android事务队列处理的实现,由于代码原因,这篇将在其基础之上,优化一个精简版。
今天涉及内容:
- 概述
- AffairManager初始化
- AffairManager主要方法
- AffairManager使用示例
4.1 声明及初始化AffairManager
4.2 设置事务处理监听,处理时间间隔
4.3 处理事务
4.4 结束事务 - AffairManager源码
一. 概述
AffairManager
是用于处理事务队列的工具类。原理是将一个个的事务添加到 AffairManager
的队列中,然后依次处理。
二. AffairManager初始化
初始化事务队列处理类对象,你可以这样:
//声明
private AffairManager mAffairManager;
//初始化对象
mAffairManager=new AffairManager();
三. AffairManager主要方法
/**
* 设置事务队列处理时间间隔
* @param delayTime 间隔时间,单位毫秒,不设置则默认500毫秒
* @return
*/
public AffairManager setDelayTime(long delayTime)
/**设置事务处理监听**/
public void setOnAffairListener(OnAffairListener onAffairListener)
/**事务处理方法**/
public void handleAffair(Object obj)
/**需要更新UI的时候,可以在doAffair(Object obj)或affairDestroy()中执行**/
public void updateInUI(Activity activity, Runnable runnable)
/**结束事务**/
public void stopAffair()
四. AffairManager使用示例
4.1 声明及初始化AffairManager
//声明
private AffairManager mAffairManager;
//初始化对象
mAffairManager=new AffairManager();
4.2 设置事务处理监听,处理时间间隔
- 添加的事务,在
doAffair(Object obj)
依次处理,事务队列全部执行完毕后,回调affairDestroy()
方法 - 设置事务处理时间间隔,单位为毫秒,若不设置,则默认事务处理时间间隔为500毫秒
- 在
doAffair(Object obj)
或affairDestroy()
方法中需要更新ui时,可调用updateInUI(Activity activity, Runnable runnable)
方法
//设置事务处理时间间隔,单位毫秒
mAffairManager.setDelayTime(1500)
//设置事务处理监听
.setOnAffairListener(new AffairManager.OnAffairListener() {
@Override
public void doAffair(Object obj) {
String time = DateUtil.getTimeToString(System.currentTimeMillis(), "HH:mm:ss.SSS");
LogUtil.i("=1======执行===obj==="+obj.toString()+" time="+time);
//此处对事务做具体处理
//......
//需要更新ui时调用
mAffairManager.updateInUI(MainActivity.this, new Runnable() {
@Override
public void run() {
mTextView.setText(obj.toString());
}
});
}
@Override
public void affairDestroy() {
LogUtil.i("======队列中事务全部处理完毕=======");
//事务全部处理完毕后的需要处理的逻辑
//......
//需要更新ui时调用
mAffairManager.updateInUI(MainActivity.this, new Runnable() {
@Override
public void run() {
mTextView.setText("队列中事务全部处理完毕");
}
});
}
});
4.3 处理事务
需要处理事务时,调用以下方法
//需要处理事务时,添加事务到队列
mAffairManager.handleAffair("a疫情防御"+i);
4.4 结束事务
退出时,结束事务队列
//结束事务
mAffairManager.stopAffair();
五.AffairManager源码
下面贴出AffairManager
源码:
网友评论