0

数週間前にアプリをリリースしましたが、多くのユーザーがアプリの速度が遅いと不満を漏らしています。アプリをテストするとき、タブレットを使用していますが、問題なく正常に動作します。

Android 2.2 のエミュレーターでアプリをテストしたところ、SQLite データベースからデータを読み込んでいるときにアプリが非常に遅いことがわかりました。Cursor.moveToFirst() メソッドが非常に遅く、エミュレータが約 1 分間フリーズすることがわかりました。これが、ユーザーがこのアクティビティを開くときに強制終了が発生したり、読み込み中にアプリが遅いと言っている理由である可能性があります:|

それぞれ値が 1 つのみの最大 700 列をロードしています。

私は何を間違っていますか?

4

1 に答える 1

0

デフォルトでは、クエリは UI スレッドで実行されます。膨大な量の情報 (700 列相当) をクエリしており、これがかなりの時間 UI スレッドをブロックしているようです。CursorLoaderUI スレッドをブロックしないように、またはを使用して非同期でクエリを実行する必要がありますAsyncTask(UI スレッドが 4 ~ 5 秒間ブロックされている場合、アプリは「アプリケーションが応答していません」というエラーで強制終了します)。

于 2012-07-01T23:48:16.687 に答える