4

StackOverflow の一部の回答が探しているものではないため、この質問をしています。私の問題は、Android 2.3 などの初期バージョンでは、クエリが非常に遅く、このメッセージが表示されることです。

私のエラーメッセージ 06:37:25.521: ERROR/CursorWindow(322): need to grow: mSize = 1048576, size = 45, freeSpace() = 43, numRows = 8928 07-12 06:37:25.521: ERROR/CursorWindow(322): not growing since there are already 8928 row(s), max size 1048576

このメッセージは Android 3.0 以降では発生しないと思いますが、クエリを実行するにはまだ時間がかかるため、制限の使用を検討しています。制限はありませんが、Android 4.0 以降でほぼ問題なく動作します。SQLite FTS3 MATCH クエリも使用しています。

私が 8928 行ある理由は、私が検索候補を作成していて、誰かが「t」を入力して 8928 行またはそれ以上の行を取得できるためです。これにより、明らかに Android 2.3 がフリーズします。検索候補のしきい値を制限することはできません。結果によっては、2 文字しかない結果が 20 件または 20000 件以上になる場合があるためです。

Android SQLite と膨大なデータセット

このリンクは、おそらく回答を得るのに最適な場所です。指定されたリンクの最後の答えは有望に思えますがcursor.getCount()、そうしない限り行数を取得する方法はありません.私はそれについて間違って考えています。これに対する回避策はありますか?CursorWindow の問題を解決するには、コードでこれをどのように行いますか?

4

0 に答える 0