1

コンテンツプロバイダーのdbに行数を保持したいのですが。

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

onOpen()メソッドでこの変数を初期化し、挿入/削除メソッドでインクリメント/デクリメントするだけですが、これは正しいですか?

コンテンツプロバイダーのライフサイクルはAndroidによって処理されるため、ある時点でプライベート変数が削除される可能性があるのではないかと心配しています...

4

2 に答える 2

3

私はあなたが意味するonCreate()のではないかと思いますonOpen()か?もしそうなら-あなたがこの変数を更新するならば、それは正しいでしょう

  1. onCreate()の場合-基になる構造/dbから現在のカウントを要求している可能性があります
  2. 各挿入/削除操作の後

上記を実行する場合(他のプロバイダーのメソッドの前に呼び出されることが保証されているため、問題はありません。onCreateシステムがプロバイダーを強制終了する場合でも)、次のインスタンスでこの値を復元します。onCreate()

注:これはすべて、このプロバイダーを介してのみDBに変更を加えることができる場合にのみ適用されます。それ以外の場合-毎回データカウントを要求するか、他のレベルでキャッシュする必要があります。

幸運を

于 2012-09-02T17:10:32.730 に答える
0

手動で追跡するのではなく、 Cursor#getCount()メソッドを使用して行数を取得する必要があります。

于 2012-09-02T17:08:47.207 に答える