Android Contact数据模型之EntityDelta(一)

转载 2012年03月31日 11:50:09
 EntityDelta的数据模型描述:
        EntityDelta是ValuesDelta的集合,它还实现了Parcelable接口。它包含了主数据(存在ValuesDelta mValues中)和子数据.它把子数据以ValuesDelta的形式按照它们的mimetype存放在HashMap<String, ArrayList<ValuesDelta>> mEntries中(拥有相同的mimetype的ValuesDelta放在同一个ArrayList).

       构造函数

       public EntityDelta()
       创建一个空的EntityDelta

       public EntityDelta(ValuesDelta values)
       创建一个EntityDelta,并用ValuesDelta values来初始化主数据。

       主要成员变量

        private ValuesDelta mValues;
        用于存放主表(主数据),

       private HashMap<String, ArrayList<ValuesDelta>> mEntries = Maps.newHashMap();
       用于存放子表(子数据),子数据以ValuesDelta的形式按照它们的mimetype存放在其中。


       静态成员变量
       public static final Parcelable.Creator<EntityDelta> CREATOR
       注
:该变量因Parcelable而设计。

       主要静态函数
       public static EntityDelta fromBefore(Entity before)
       用Entity before来实例化一个EntityDelta,把Entity before的getEntityValues()得到主数据以ValuesDelta.fromBefore的形式打包成ValuesDelta并赋予mValues.且设置mValues的mIdColumn为RawContacts._ID。然后用before.getSubValues()得到子数据,然后以ValuesDelta.fromBefore的形式打包成ValuesDelta并放入mEntries。

       注1:这里的Entity before对应一个RawContacts的数据。
       注2:该函数在把Entity转化成EntityDelta的过程中,把Entity的子数据的Uri uri丢失了。

       因为对于update操作可以通过ValuesDelta的id就可以确定它的位置(当然Uri uri也可以确定,毕竟Data.CONTENT_URI是固定)。

       对于删除操作,有主数据的信息就可以了。

       public static EntityDelta mergeAfter(EntityDelta local, EntityDelta remote)

       用EntityDelta remote对EntityDelta local进行mergeAfter操作。它主要是通过对EntityDelta local和EntityDelta remote中的ValuesDelta进行相应的ValuesDelta的mergeAfter操作来实现mergeAfter操作。对于主数据是直接对他们进行mergeAfter操作。对于子数据,是对同id(即ValuesDelta的mIdColumn值相同)的ValuesDelta进行mergeAfter操作。最后返回新的EntityDelta local。

        注1:EntityDelta local可以为null,这时会创建一个空的EntityDelta以便处理。
        注2:mergeAfter操作是针对EntityDelta local而进行,所以它会被改变。

        主要成员函数

        public ValuesDelta getValues()
        返回主数据mValues。

       public boolean isContactInsert()
       返回是否是Insert操作,通过调用主数据mValues的isInsert()方法来判断。

       public ValuesDelta getPrimaryEntry(String mimeType)
       返回PrimaryEntry

       得到MIME类型为mimeType的PrimaryEntry。找到MIME类型为mimeType的ValuesDelta且它的isPrimary()为true,就返回该ValuesDelta。

       如果没找到但MIME类型为mimeType的ValuesDelta的ArrayList<ValuesDelta>至少有一个,则返回该列表上的第一个ValuesDelta。否则返回null。

       public ValuesDelta getSuperPrimaryEntry(String mimeType)
       返回SuperPrimaryEntry

       它直接调用getSuperPrimaryEntry(mimeType, true)。

       public ValuesDelta getSuperPrimaryEntry(String mimeType, boolean forceSelection)
       返回SuperPrimaryEntry

Contact数据模型之EntityDelta

public class EntityDelta implements Parcelable EntityDelta的数据模型描述: EntityDelta是ValuesDelta的集合,它还实现...
  • hudashi
  • hudashi
  • 2011年12月02日 21:20
  • 1496

Android Contact数据模型之EntityDelta

public class EntityDelta implements Parcelable         EntityDelta的数据模型描述:         EntityDelta是V...
  • zbl_zbl
  • zbl_zbl
  • 2012年09月04日 17:57
  • 412

Android Contact数据模型之EntityDelta(二)

原理和getPrimaryEntry(String mimeType)相似。但是只有forceSelection为true的情况下,才在没有找到SuperPrimaryEntry的情况下返回Prima...
  • ruanjianxiong
  • ruanjianxiong
  • 2012年03月31日 11:50
  • 958

Contact数据模型之ValuesDelta

public static class ValuesDelta implements Parcelable  ValuesDelta位于com.android.contacts.model包的Ent...
  • hudashi
  • hudashi
  • 2011年12月02日 21:46
  • 1569

Contact数据模型之EntitySet(EntityDeltaList)

com.android.contacts.model.EntitySet在Android 4.0中已经改名为了com.android.contacts.model.EntityDeltaList. ...
  • hudashi
  • hudashi
  • 2011年12月02日 21:19
  • 1192

Android使用Contact数据模型来批量插入联系人

使用Contact数据模型来批量插入联系人主要需要contact数据模型的以下两文件:   contacts.model下的:   EntitySet.java   EntityDelta.ja...
  • shanghaibao123
  • shanghaibao123
  • 2015年05月27日 15:45
  • 1099

Android自动化测试之UIAutomator(一)

Android程序开发迭代周期短,测试case重复度高,大部分case属于功能验证,常规的测试方法是测试人员按照预先写好的Case手顺进行测试,人工比对操作结果和预期结果。这种测试手段重复度高,效率低...
  • xzy2046
  • xzy2046
  • 2014年09月14日 13:55
  • 5087

Android 2.0中电话本contact的读写操作(增删改查)

一.前言      1.1 Android的电话本的机制. Android的电话本通过contentProvider封装好的。我们只要通过sdk提供的Uri和字段来对其进行增、删、改、查。 ...
  • wufenglong
  • wufenglong
  • 2011年10月08日 17:17
  • 4828

Android Contact分析(一):Data, RawContact, Contact之间的关系

一、前言:         最近任务暂时做完了,有一,两天空闲时间,因此,就想把Android Contact这块梳理下,也方便以后自己。         Android Contact的...
  • xingfeng2010
  • xingfeng2010
  • 2013年09月06日 16:09
  • 8361

使用Contact数据模型来批量插入联系人(下)

上文接《使用Contact数据模型来批量插入联系人(上)》 文件5 ContactPersistTask.java文件 package com.teleca.robin.Contac...
  • hudashi
  • hudashi
  • 2011年12月02日 22:12
  • 1483
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Contact数据模型之EntityDelta(一)
举报原因:
原因补充:

(最多只允许输入30个字)