Android App之Email浅析

来源:互联网 发布:电影资源采集站源码 编辑:程序博客网 时间:2024/06/05 20:40
Base on Android4.2.1

以下不保证正确性,仅供娱乐参考。

Email的概念层次图,可以对Email有个宏观的了解(pop端口一般是995,而smtp一般是465)。

Email结构

代码部分,定位到java层次

packages/apps/Email/src/com/android/email

Email

各个部分的代码作用区域大概就是这些了,有些时候其实看UML图比我说千百遍都来的很好理解

回归到最早期的email,是通过发送指令下达消息的,具体可以参考文章后面的链接,上文提到的transport文件夹是用来处理通信的,找到smtpSender.java文件,里面有一段代码用来发送email data以及cc bc等,而其他的java只是做了些用户交互的东西。

接下来从总体架构看下email的消息走向先从setupxxx.java配置账户,在此注意xml的解偶作用,随后Controller把消息传送到messagingController,注意这是一个死循环的Thread,内置一个Queue消息队列,接下来就是一些异步Task和监听的Listener 回掉,总感觉还是看图方便,希望这个图能让大家看懂。

Message Handler
其中synchronizeMailboxGeneric中操作比较多,下面列一下,英文的,看不懂拉倒。 8-O

  • Get the message list from the local store and create an index of the uids
  • Open the remote folder and create the remote folder if necessary
  • Open the remote folder. This pre-loads certain metadata like message count
  • Trash any remote messages that are marked as trashed locally
  • Get the remote message count
  • Determine the limit # of messages to download
  • Create a list of messages to download
  • Download basic info about the new/unloaded messages (if any)
  • Refresh the flags for any messages in the local store that we didn’t just download
  • Remove any messages that are in the local store but no longer on the remote store
  • Clean up and report results

在多个账户同时接收邮件的过程中常常遇到多个线程的交互,这样就必须用到锁机制,随便搜索了下,大多数是些读写操作,这也很符合PV操作的概念,凑合看下吧,可能以后会做详细解释。

接下来看看数据库的db文件,从里面挑选了几个比较常用的Table,account存储账户信息,mailbox对应邮件文件夹,message对应的是邮件正文。

Android 3.0为了适配平板加入了Fragement的概念,下面以MessageListFragement为例子,看下消息是如何从view传到database的?本人比较关注结构方面,有点小建筑控:lol: ,先看下这个类的结构,其中implements4个package外的接口,然后内部定义了2个接口

MessageListFragment

关注一个接口回掉的方法,下面是类图,简单解释下,当点击onclick()的时候调用回掉接口中定义的内容,其中getTargetFragment()的用法比较有趣,和setTargetFragment()搭配使用。关于callback的使用最早解除是在C中了解到了,他定义了一个接口模板,然后通过内嵌的方式突破权限的限制,使得Class A可以调用Class B的方法,同时能拆开Class AB的耦合,一举两得,不能在google工作也就只能拜读他们的代码咯。

CallBack

疑问

在有网络时,是否也每次都是从数据库中取数据,换句话说就是先得从网络把数据存储到sqlite,然后再从db中取出显示?

参考

http://www.cnblogs.com/CrazyWill/archive/2006/07/03/441795.html

http://blog.sina.com.cn/s/blog_5d6ee3360100r1my.html

To be Continue…

原创文章,转载请注明: 转载自:-X archcodev

本文链接地址: Android App之Email浅析 && M0.0.6

原创粉丝点击