美文网首页K-9 Mail
K-9 Mail队列任务

K-9 Mail队列任务

作者: nickieeee | 来源:发表于2020-02-05 17:33 被阅读0次

概述

主要说明一下MessagingController类,基本实现了邮件客户端的所有业务逻辑,并提供了对底层实现的统一封装。它实现了runnable接口,可以作为后台线程启动,这个线程在第一次调用该类的单例方法 getInstance(Application application)时构造,之后一直运行,除非在没有服务可执行的情况下才停止。

队列里的任务执行也是在MessagingController类的run方法里处理的,每个要处理的任务可以定义为实现 Runnable 接口的匿名内部类,然后用这个属性保存起来,当 MessagingController 作为一个线程启动的时候,会从这个属性里面逐个提取任务来执行,被执行的任务会在提取的同时从这个属性里删除调用run方法去执行,如果这个过程中报错,会把当前的command再放回到commands,以便下次可以继续执行未执行的command。

放在队列里的任务分为高优先级任务和低优先级任务,阻塞队列的command对象实现了Comparable接口,内部重写了compareTo方法,优先通过Forground来调整队列任务执行的先后顺序,默认则通过sequence(加入队列的顺序)判断,邮件里放到队列里的任务具体描述如下:

Forground任务

untitle.png

doRefreshRemote

描述:列出本地和远程可用的文件夹。该方法调用listFoldersCallback用于返回本地文件夹,稍后会用于远程文件夹再使用。如果没有本地文件夹则通过此方法强制执行。

调用时机:首次登陆、创建账户,刷新文件夹

loadMessageForViewRemote:

描述:从远程服务器拉取邮件信息

调用时机:打开邮件详情时、修复无主题的邮件时

getFolderUnread:

描述:获取文件夹未读数量

调用时机:当邮件列表可见时

非Forground任务

[图片上传失败...(image-bd4bf5-1580895089655)]

synchronizeMailbox

描述:同步指定文件夹

调用时机:首次登陆、删除邮件后(包括邮件列表和邮件详情页面)、加载更多邮件

processPendingCommands

描述:这个表保存需要提交到服务器执行的命令,保证这些命令不会丢失,防止客户端因各种原因退出而导致命令没有被执行的情况发生,从 而确保客户端与服务端数据的一致性

调用时机:设置或同步Flag标识(queueSetFlag也会调用)、清除数据、标记全部已读、移动或复制邮件同步、发送邮件成功后移动邮件到已发送时、删除邮件同步、保存草稿

queueSetFlag

描述:处理Flag标识

调用时机:设置或同步Flag标识(processPendingCommands也会调用)、删除邮件同步

queueExpunge

描述:处理清除数据

moveMessages

描述:移动邮件

调用时机:移动邮件

moveMessagesInThread

描述:移动邮件会话(聚合邮件)

调用时机:移动邮件会话

copyMessages

描述:复制邮件

调用时机:复制邮件

copyMessagesInThread

描述:复制邮件会话

调用时机:复制邮件会话

expunge

描述:清除数据

deleteThreads

描述:删除邮件会话

调用时机:删除邮件会话

deleteMessages

描述:删除邮件

调用时机:删除邮件

emptyTrash

描述:清空垃圾箱

checkMail

描述:检查新邮件

调用时机:收到邮件推送时主动检查一次新邮件、主动拉取邮件(24小时)

finalize sync

描述:邮件同步结束

调用时机:检查新邮件

clear notification flag for

描述:清除邮件通知

调用时机:检查新邮件后

sync

描述:清除邮件通知

调用时机:同步文件夹

compact

描述:账户压缩

调用时机:未使用

clear

描述:清理账户

调用时机:未使用

recreate

描述:重建账户

调用时机:未使用

Push messageArrived of account

描述:服务器推送邮件

相关文章

  • K-9 Mail队列任务

    概述 主要说明一下MessagingController类,基本实现了邮件客户端的所有业务逻辑,并提供了对底层实现...

  • K-9 Mail下拉刷新流程

    疑问: 1.大队列里的获取邮件信息具体获取什么? 2.小队列里的未处理完的任务的耗时以及具体内容? 3.对比其他邮...

  • K-9 Mail可见数量限制

    计算规则:1.默认每个文件夹加载(m=10)封邮件。2.点击加载更多则可见的个数限制增量。即(m+10)。3.收到...

  • 同步任务队列、宏观任务队列、微观任务队列

    1、JS是单线程语言,包括同步任务、异步任务,异步任务又包括宏观任务和微观任务 2、执行顺序:同步任务——>微观任...

  • 同步任务队列、宏观任务队列、微观任务队列

    1、JS是单线程语言,包括同步任务、异步任务,异步任务又包括宏观任务和微观任务 2、执行顺序:同步任务——>微观任...

  • 关于GCD中的队列、线程、任务之间的关系及死锁的理解

    1. 任务与队列之间的关系 任务产生后被加入到某个队列中,队列仅保管任务,不执行任务; 队列分为串行队列和并行队列...

  • js运行机制

    在运行时会形成任务队列,分为同步任务队列和异步任务对列,同步队列优先加载异步任务队列会形成队列任务池,定时器不会一...

  • 2018-06-08 宏任务和微任务

    js先把宏任务放进宏任务队列里,再把微任务放进微任务队列里,执行的时候先执行宏任务队列里的一个任务,再把微任务队列...

  • GCD总结

    一.队列:这里的队列指执行任务的等待队列,即用来存放任务的队列。 二.在队列中加入任务1.队列中 添加 异步调用的...

  • nextTick、setImmediate、promise.re

    执行队列(同步) 任务队列(异步事件) 每当异步任务完成后会在任务队列中添加一个关联事件,待执行队列任务执行完成...

网友评论

    本文标题:K-9 Mail队列任务

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