18

に関していくつか質問がありCursorます。

を閉じないことのデメリットを知りたいCursorですか?

リソースの割り当てを解除しますが、どのリソースが割り当て解除されますか?

?を閉じないとCursor?どのような影響があり、どの程度ですか?

a を閉じなくても少しCursorは影響はありませんが、log cat でエラーが発生します。Activity

4

4 に答える 4

8

a を閉じるCursorと、潜在的なメモリ リークが回避されるため、はい、使用されなくなったら常に閉じる必要があります。

于 2012-08-09T21:35:48.967 に答える
4

カーソルを 1 つ閉じるのを忘れてしまうという問題が多く発生することはないと思います。問題 (これはほとんどすべてのメモリ リークに当てはまります) は、何度も何度もやり続けると、最終的に何か悪いことが起こるということです。

たとえば、デバイスの SQLite DB からサーバーにデータをアップロードするアプリを作成しました。データベースの読み取りと書き込みが完了するたびにカーソルを閉じないと、最終的にメモリ不足エラーやその他のさまざまな問題が発生します。

于 2012-08-09T22:46:42.480 に答える
3

カーソルは単なるインターフェースです。多くは、実装、使用しているそのインターフェイスを実装する特定のクラスに依存します...

SQLiteCursor の場合、クリーンアップされるものがかなりあります (これは Froyo からのものです)。

@Override
public void close() {
    super.close();
    deactivateCommon();
    mQuery.close();
    mDriver.cursorClosed();
}

カーソルを閉じないでください。データは一貫しているはずですが、メモリリークが発生します...

于 2012-08-09T22:15:44.233 に答える
-2

カーソルを閉じないと、データベース内のデータへのアクセスに問題が発生します。これは、データベースが開いている間は、アクティビティが一時停止するなどの事態が発生した場合にアクセスできないためです。具体的には、アクティビティに管理させると、この問題を軽減できます。

于 2012-08-09T21:29:25.200 に答える