0

私のコードにはいくつかの sqlite 演算子があります。SQL を実行すると、500 行あります。行の実行と取得にはかなりの時間がかかりますがcursor.close()、関数を呼び出すと10 秒かかります。

この消費時間を短縮するにはどうすればよいですか?

Cursor cursor = database.rawQuery(sql, null);
while(cursor.moveToNext()){
     String str1 = cursor.getString(0);
     String str2 = cursor.getString(1);
     System.out.println(str1+" and "+str2);
}
cursor.close();  // this line takes 13 seconds. but above code takes only 200 ms

コードはこのようなものです

4

1 に答える 1

1

startManagingCursor(Cursor c)Activity Class のメソッドを使用することをお勧めします。Activity Life Cycle に従って、Activity が Cursor を処理できるようにします。

Form Docs StartManagingCursor ...

public void startManagingCursor (Cursor c)
Since: API Level 1

このメソッドは非推奨です。 代わりに、LoaderManager で新しい CursorLoader クラスを使用してください。これは、Android 互換性パッケージを通じて古いプラットフォームでも利用できます。

このメソッドにより、アクティビティは、アクティビティのライフサイクルに基づいて、指定された Cursor のライフサイクルを管理できます。つまり、アクティビティが停止すると、指定された Cursor で自動的に activate() が呼び出され、後で再開されると requery() が呼び出されます。アクティビティが破棄されると、管理されているすべての Cursor が自動的に閉じられます。

HONEYCOMB以降をターゲットにしている場合は、代わりに を使用することを検討LoaderManagerしてgetLoaderManager()ください。

于 2012-08-24T09:23:55.940 に答える