我正在浏览Google IOSched App的源代码,并注意到以下代码段是其Content Provider实现的一部分:
public static class Blocks implements BlocksColumns, BaseColumns

据我所知,BaseColumns只是两个常量的接口(interface):_COUNT_ID

我有两个问题:

  • 与直接在类中具有私有(private)字段_ID相比,实现BaseColumns有哪些优点/缺点?
  • 常量_COUNT的作用是什么?
  • 最佳答案

    根据Android Developer Guide



    本指南继续说明了为什么需要primary key提供的唯一值的基本知识,



    要按照您提供的顺序回答您的问题,请执行以下操作:

  • 拥有_ID列是多功能的最佳实践。它不一定要显示,但是作为游标和查询所必需的主键(和外键!)非常有用。
  • 由BaseColumns标识后,会自动将此列标识为唯一的主键(唯一)(显然),并指示其自动递增。
  • 据推测,实现BaseColumns比为私有(private)字段键入这些属性要容易。
  • _COUNT is just the count of the number of rows in a directory.如果要删除和添加表的行,则没有理由相信项目的_ID整数与添加时或排序属性有关。换句话说,last_insert_rowid() 不等于 Count()。 _COUNT列仅提供一种方法来显示在该查询的每一行中查询返回多少结果。有关视觉引用,请参见linuxtopia.org
  • 10-06 13:07