1

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

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

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

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

4

2 回答 2

3

我猜你的意思是onCreate(),不是onOpen()吗?如果是这样 - 如果您要更新此变量,那将是正确的

  1. 在 onCreate() - 可能从底层结构/数据库请求当前计数
  2. 每次插入/删除操作后

如果你在上面做 - 所以你不会有问题,因为它保证onCreate会在任何其他提供者的方法之前被调用,即使系统会杀死提供者 - 你会在下一个实例中恢复这个值onCreate()

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

祝你好运

于 2012-09-02T17:10:32.730 回答
0

You should use the Cursor#getCount() method to get the number of rows instead of keeping track manually.

于 2012-09-02T17:08:47.207 回答