コンテンツプロバイダーのdbに行数を保持したいのですが。
private int nRows;
public int getNRows(){
return nRows;
}
onOpen()メソッドでこの変数を初期化し、挿入/削除メソッドでインクリメント/デクリメントするだけですが、これは正しいですか?
コンテンツプロバイダーのライフサイクルはAndroidによって処理されるため、ある時点でプライベート変数が削除される可能性があるのではないかと心配しています...
コンテンツプロバイダーのdbに行数を保持したいのですが。
private int nRows;
public int getNRows(){
return nRows;
}
onOpen()メソッドでこの変数を初期化し、挿入/削除メソッドでインクリメント/デクリメントするだけですが、これは正しいですか?
コンテンツプロバイダーのライフサイクルはAndroidによって処理されるため、ある時点でプライベート変数が削除される可能性があるのではないかと心配しています...
私はあなたが意味するonCreate()
のではないかと思いますonOpen()
か?もしそうなら-あなたがこの変数を更新するならば、それは正しいでしょう
上記を実行する場合(他のプロバイダーのメソッドの前に呼び出されることが保証されているため、問題はありません。onCreate
システムがプロバイダーを強制終了する場合でも)、次のインスタンスでこの値を復元します。onCreate()
注:これはすべて、このプロバイダーを介してのみDBに変更を加えることができる場合にのみ適用されます。それ以外の場合-毎回データカウントを要求するか、他のレベルでキャッシュする必要があります。
幸運を
手動で追跡するのではなく、 Cursor#getCount()メソッドを使用して行数を取得する必要があります。