美文网首页
android事务队列处理的实现(二)

android事务队列处理的实现(二)

作者: 奔跑的佩恩 | 来源:发表于2021-11-09 09:04 被阅读0次

前言

之前已经讲过android事务队列处理的实现,由于代码原因,这篇将在其基础之上,优化一个精简版。

今天涉及内容:

  1. 概述
  2. AffairManager初始化
  3. AffairManager主要方法
  4. AffairManager使用示例
    4.1 声明及初始化AffairManager
    4.2 设置事务处理监听,处理时间间隔
    4.3 处理事务
    4.4 结束事务
  5. 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源码:

相关文章

网友评论

      本文标题:android事务队列处理的实现(二)

      本文链接:https://www.haomeiwen.com/subject/wnlmzltx.html