32334


現在、5万件ほどのデータを保持しているテーブルから全件データ取得し、  
取得したデータをリストに一覧表示する際にかかる時間を短縮出来ないか試行錯誤しています。

テストした実機は Galaxy Nexus AndroidOS:4.22 です。

試したのは、以下の３点です。

・AsyncTaskを複数使用する  
→AsyncTaskのスレッド数が5個までで11タスク動かそうとしても上手くいかず、処理は完了しませんでした。(ログで確認しましたが、9タスクほど完了した時点で処理が終了してしまいました・・・)

・SELECT文の修正  
→select * 〜 になっていたのを試しにデータのタイトルだけ取得するようにしましたが、それでもまだ約20秒から30秒ほど掛かってしまいます・・・

・contentProviderClientを使用  
→僅かながら効果はありましたが、上記のSELECT文の修正をあわせて使っても実用性に欠ける結果となりました。

後残っているのは、  
Twitterなどの様にListviewが終端までスクロールされた時に追加で読み込みをするしかないのかなと思っています。  
ただ、これはこれで他の箇所への影響が多いため可能ならば回避したい所ではあります・・・

解決のヒントになるような些細な事でもいいので、  
どうか回答よろしくお願い致します。


CC BY-SA 3.0
2017-02-02T06:21:04.850
32329
2017-02-02T09:47:49.873
9939
question
android android-asynctask
ContentProviderのquery処理にかかる時間を実用出来るレベルに短縮出来ないか試行錯誤しています。


試されたことのみ記載されていて、どのような構成で実装されているのかわかりませんでしたので、案のみ記載します。

  1. １００件のデータを読み込む
  2. 1.で読み込んだデータが０でなければ、次の１００件のデータを読み込む。  
1.で読み込んだデータが０ならば、読み込み終了

  3. pause時には読み込み処理を停止
  4. resume時には読み込み処理を再開

* * *

５万件を **一度に** 取得する高速化のテクニックを求めているのであれば、回答になっていないかもしれません。


CC BY-SA 3.0
2017-02-02T07:25:23.093
32330
2017-02-02T07:25:23.093
20272
32329
answer


[CursorAdapter](https://developer.android.com/reference/android/widget/CursorAdapter.html)で扱えば件数は関係なくListViewなどに表示できると思います。


CC BY-SA 3.0
2017-02-02T09:47:49.873
32334
2017-02-02T09:47:49.873
354
32329
answer