摘要:
2014-01-1117:29:221. 当用户选择Phonebook中从SD卡导入联系人的操作后,程序回调转到ImportVCardActivity,然后用户选择好要导入的.vcf文件,并点击“确定”button,调用ImportVCardActivity中的importMultipleVCardFromExternalStorage()方法:1 private void importMultipleVCardFromExternalStorage(2 final List selectedVCardFileList) {3 mHandler.... 阅读全文
摘要:
2014-01-0811:43:50如何简单设置SVN(前提是SVN已经安装)1. 创建一个目录:mkdir -p ~/svn/2.1.J.1.12.进入新创建的目录:cdsvn/2.1.J.1.1执行如下命令:svnadmin create . //作用是将此目录当作SVN仓库, 此命令执行后将会在2.1.J.1.1目录下面生成一些目录和文件3.进入conf目录,配置里面的三个文件: 1 打开authz文件,添加如下两句 2 [/] 3 * = rw 4 5 打开passwd文件,添加账户名和密码: 6 david = 123456 7 aaa = 654321 8 9 打开svns... 阅读全文
摘要:
2014-01-0711:18:08将百度空间里的东西移过来。1.Save contact我们前面已经写了四篇文章,做了大量的铺垫,总算到了这一步,见证奇迹的时刻终于到了。用户添加了所有需要添加的信息后,点击“Done”来保存新建好的联系人,我们就从用户点击“Done”Button开始分析。前面提到过,“Done”的处理事件是在ContactEditorActivity里面设置的,如下:1 View saveMenuItem = customActionBarView.findViewById(R.id.save_menu_item);2 saveMenuItem.setOnClickList 阅读全文
摘要:
2014-01-0710:46:30将百度空间里的东西移过来。在前面的文章中我们分析了UI的加载,其中提到了一个重要的对象:RawContactDeltaList mState,我前面说过这个对象很重要,和联系人保存有关,现在就分析一下联系人到底是怎么保存的。1.千里追踪mStateContactEditorFragment类bindEditorsForNewContact()方法中创建了一个RawContactDelta对象insert,代码如下: 1 private void bindEditorsForNewContact(AccountWithDataSet newAccount, 2 阅读全文
摘要:
2014-01-0710:23:22将百度空间里的东西移过来。5.KindSectionViewKindSectionView是何方神圣呢?它又是怎么怎么和一个DataKind,以及一个RawContactDelta绑定到一起的呢?继续看,进入KindSectionView,其实KindSectionView就是一个普通的自定义View,他的作用还真的就是将DataKind中包含的数据变成UI显示出来,那么这个View是什么呢?它有自己的xml文件:item_kind_section.xml: 1 7 8 11 12 17 18 25 26 ... 阅读全文
摘要:
2014-01-0709:54:13将百度空间里的东西移过来。本文从点击“添加联系人”Button开始,分析新建联系人页面UI是如何加载,以及新的联系人信息是如何保存的,借此,我们一探Phonebook复杂的自定义View的加载机制。1. 从前文分析我们知道,New Contact页面是随着帐号类型的不同,而显示不同的UI,这次我们以LocalAccountType为例来分析。在联系人列表页面最下方,有一个“Add” Button, 点击新建联系人,这个Button其实一个MenuItem,在ContactsListFragment里面,点击事件处理在onOptionsItemSelected 阅读全文
摘要:
2014-01-0617:18:291.Phonebook中新建/编辑联系人的UI不是用xml文件写的,它是随着帐号类型的改变来加载不同的UI,比如SIM联系人,只有Name、Phone Number,如果是USIM,或许还有第二个号码、Email,但是本地联系人除了包含这些,还有Nickname,Website等,所以帐号如何定义以及UI如何加载就变得很复杂。2.帐号类型(以AdnAccountType SIM帐号为例)继承关系:AdnAccountType.java -->BaseAccountType.java -->AccountType.java,在AccountType 阅读全文
摘要:
2014-01-0617:05:11 将百度空间里的东西移过来。本文适合ROM定制做Phonebook的童鞋看,其他人飘过即可~Phonebook添加/编辑联系人UI加载及保存联系人流程,是一系列研究Phonebook联系人保存机制的文章,做联系人好长时间了,一直想写一些东西,但总是找不到合适的时间,最近总算有点空了,写写吧!Android Phonebook编写联系人UI加载及联系人保存流程(二)http://www.cnblogs.com/wlrhnh/p/3508253.htmlAndroid Phonebook编写联系人UI加载及联系人保存流程(三)http://www.cnblogs 阅读全文
摘要:
2013-12-3018:16:111.Service和Activty都是从Context里面派生出来的,因此都可以直接调用getResource(),getContentResolver()等方法。2.启动Service有两种方式: 2.1startService():该方法启动Service,访问者和Service之间没有关联,一旦启动,即使访问者退出,Service依然运行; 2.2 bindService():该方法启动Service,访问者和Service绑定在一起,一旦访问者退出,Service随即退出。3.onCreate()只会被调用一次,onStartCommand()方.. 阅读全文
摘要:
2013-12-3016:55:071.BroadCastReceiver是Android四大组件之一,本质上是一个系统级的监视器。2.每次BroadCast事件发生后,系统都会创建对应的BroadCastReceiver对象,并自动触发它的onReceive()方法,这个方法需在10秒内执行完毕,否则会出现ANR。因此,如果需要完成一项耗时较长的任务,应该启动一个Service来完成,不能在BroadCastReceiver里面启动一个线程,因为BroadCastReceiver的生命周期本身很短,有时候会出现子线程没有执行完成,而BroadCastReceiver已经退出的情况,如果Bro 阅读全文