在内容提供商中保留变量

时间:2012-09-02 16:59:57

标签: android android-contentprovider

我想在我的内容提供商中保留db中的行数。

private int nRows;
public int getNRows(){
   return nRows;
}

这个想法是在onOpen()方法中初始化这个变量,而在插入/删除方法中只是增加/减少它,这是正确的吗?

由于内容提供商的生命周期由android处理,我担心它可能会在某个时候删除我的私有变量......

2 个答案:

答案 0 :(得分:3)

我猜您的意思是onCreate(),而不是onOpen()? 如果是这样 - 如果您要更新此变量

,那将是正确的
  1. 在onCreate()中 - 可能从底层结构/ db
  2. 请求当前计数
  3. 每次插入/删除操作后
  4. 如果你在上面做 - 所以你没有问题,因为它保证在任何其他提供者的方法之前调用onCreate,即使系统会杀死提供者 - 你将恢复这个下一个实例onCreate()

    中的值

    注意:只有通过此提供商才能对DB进行任何更改时,这一切都适用。否则 - 您应该每次请求数据计数,或者在其他级别缓存。

    祝你好运

答案 1 :(得分:0)

您应该使用Cursor#getCount()方法获取行数,而不是手动跟踪。