2012-05-03 3 views
0

データベースなしでコンテンツプロバイダを使用することに関する質問があります。データベースのないコンテンツプロバイダが保存されたカーソル:問合せカーソルを閉じることができますか?

これには、matrixcursorsを使用したリスト/ HashMapがあります。クエリは、コンテンツプロバイダに行われている場合は、要求されたデータが言って返される

MatrixCursor mc = someMap[2]; 
return mc; 

がキシにクライアントがカーソルをクローズ何場合(これは擬似コードですか)? 返されたカーソルはそのオブジェクトへの参照であるため、someMapのカーソルも閉じられると思います。私はここで正しいですか?

編集:

getContentResolverは()のメカニズムは、常にクエリ(と、カーソルのコピーの世話をする)我々は十分な要素を持っていないダイレクトメソッド呼び出し

答えて

1

でない場合、私は疑問に思ってあなたのハッシュマップを表示しないであなたの質問に答える方法とあなたがそれを記入する方法。

しかし、Javaで、あなたがしなければ、:

Cursor cursorA = new .... 
Cursor cursorB = cursorA; 
Cursor cursorC = getCursorAViaAMethod(); 

cursorC、cursorBとcursorAは同じJavaオブジェクトの参照を(あなたのコード内の名前)です。 これを閉じると、すべて閉じます。

+0

こんにちは、お返事ありがとうございます!私はそう思っていましたが、クライアント側とコンテンツプロバイダ側の両方のオブジェクトのハッシュコードも表示していましたが、それらは異なっていました。私は同僚と話し合い、彼はそれが異なるスレッドにあるためだと言いました。私は疑問に思っています:コンテンツプロバイダーが同じスレッド内にある場合、クエリがgetContentResolver()。query()を経由すると、これは常にシリアル化されませんか? – Boy

関連する問題