SQLiteを更に高度に使うための考察メモ
以前のSQLiteネタのメモ
自メモ - CursorLoader)
調べてると @sakura_bird1 さんのブログに到達してしまうな〜 CursorLoaderを使ってデータを読込、CursorAdapterをカスタマイズしたアダプターを使いListViewに表示 Androidはワンツーパンチ URL
SimpleCursorAdapter より CursorAdapter の違いを調べると URLが出てくるけど、交互に行の背景色変える/Viewの表示ON/OFF とかは getView上書きするしか無いんだろうな。。
自メモ - BLOB)
自分がBLOB使うとしたらclass格納したいかな−と思い
ちょっとスニペットは書いてみた
参考情報>
- MIDP -> Android その8 SqliteでのBLOBの扱い - 自力でゲーム開発
- Android(sqlite3)のblobで保存、検索する方法 - yokochiの開発メモ
- AndroidのSQLiteのCursorのデータ容量制限 [Android-TIPS] N2-Works Air・Flash(Flex×ActionScript3.0)TIPS
自メモ)SQLite以前
ArrayAdapterの改修を結局やってたんだけど、ArrayAdapter<String> とか機械的に遣ってたりとか、eclipseの警告ウザいから ArrayAdapter<Object>にしておけとかアホな実装だから遅いだけのような気がするorz(コピペ駆動だから?
呼び元:Dataクラス=>String文字列変換 内部:カンマSplitで逆復元 =>各情報をInteger.valueOf() とかに変換 ユーザさんも詳しい人はわかっててあえて名前等にカンマ入れて クラッシュレポート上げてみたりとか(苦笑粘土をこねくり回してる感じ?
まだ @sakura_bird1 さんが blogで書いてるような CursorAdapterで綺麗にな段階までいかないんだよな<Adapter自体使い回しもあるけど。Filterに関しても内部で別List持て =>持つとOOM報告が(テスト環境では無再現)=>泥臭い方法で対処
http://twitter.com/kerukerupappa/status/367294364243869697:twitter:detail:right
@kerukerupappa ありがとうございます。今ソース見てたのですがViewHolderって使わんでもいいの?あと行ごとに情報違うんですけど其の場合はconvertViewにsetTagすればいい感じですか?
@kerukerupappa getViewで渡されてくるconvertView って各業別の認識でOKなんでしたっけ?であれば convertView.setTag(item) が綺麗かなとか一瞬思ってしまいました
http://twitter.com/kerukerupappa/status/367305968847032321:twitter:detail:right
http://twitter.com/kerukerupappa/status/367309653891231744:twitter:detail:right
@kerukerupappa サンプルありがとうございました。1)onClickListnerに関しても viewHolder対象と出来る(毎回遣らなくていい 2)毎回decodeResource等をすると重いのでLruCacheでキャッシュ で速度改善できました
@kerukerupappa ちなみにgetViewはできるだけ短いほうが確かに速度改善ができますね。onClickで後処理遅延は有効かも(setTagは position持っていたほうが getItem(positon)できるので 処理分割しやすいようです
画像キャッシュ周りのメモは
TL上のメモ)
sqliteってupdateで副問い合わせ使えったけ?
2013-07-11 19:26:40 via web
@kerukerupappa where句指定でselect文出来た気がしますが?(^-^;)
@kimukou_26 できましたー。ContentValuesに副問い合わせで取得した値も有効みたいです。
2013-07-11 19:45:23 via web to @kimukou_26
ココらへんの話
Sqliteで数千件のデータとかSDカードに持たせても大丈夫なのかな…。容量やっぱり大きすぎるかな…。
@alterakey おお!ありがとうございます。吉村さんがおっしゃるなら間違いないですね!今作っているのでやろうと思っていたのでとても助かりましたm(_ _)m
@kenji_Mt @alterakey sqlite自体に持つことは問題ないと思うのですが、arrayAdopterでOOM出やすくなってしまうような。うまい方法ありますか?(addやinsert等駆使するしかないでしょうか?
2013-07-14 20:11:35 via hamoooooon to @kenji_Mt
@alterakey @kenji_Mt 例えばランキング等でカラムクリックでソートやフィルタリングとかしたいと思ったりするんですよね。あとはリプレイデータ等をBLOBで持つべきかどうかとか。あと既存upgradeでカラムupdateしたときのデータ自動移行はどこに書くのが良?
2013-07-14 21:15:56 via hamoooooon to @alterakey
@alterakey @kenji_Mt updateのalrer文の後にdb移行処理(この場合はBLOBアップデート処理、ループでグルグル書いちゃっていいものなのかなーとか)
2013-07-14 21:43:26 via hamoooooon to @alterakey
@alterakey @kenji_Mt 後はネットランキングも同じadopterで表示してしまってますが、この場合はvolley=>sqlite=>swapCursorとすべき?のイメージで問題無いでしょうか?
2013-07-14 21:44:41 via hamoooooon to @alterakey
http://twitter.com/alterakey/status/356400128875171841:twitter:detail:right
@kimukou_26 @alterakey 今更かもしれませんが、自分の場合、データを数千件突っ込んだDBをインストール時に入れて、アプリではデータを拾ってくるぐらいでアプリをupdateしたときにしかデータの追加をしないので大丈夫かと思ってました。
@kimukou_26 @alterakey 一応、メモリの無駄遣いをしないようにBaseAdapterを継承して、getViewでConvertViewの再利用をするように処理は書いてあります。
@alterakey @kenji_Mt 体感的にはAndroidAsyncHttpClientとかわらないかも。4スレッドキャッシュもかわらないみたいですし。Cancelは効きやすいけどPHPとかで作るJSONだと日本語化けるのはまだ未解決。正しいJSONでないからでしょうけど
2013-07-14 22:46:27 via hamoooooon to @alterakey
@alterakey @kenji_Mt upgradeってver変更したときのみ通る認識でしたけど、毎回通過してしまうんでしたっけ?(newVersionの引数とカラムチェック必要ですね。確かに
2013-07-14 22:51:38 via hamoooooon to @alterakey
@kenji_Mt @alterakey 一覧で100=>200件にしただけで結構きつくなったような。viewHolderの対応はしてるんですけどね?。ネット通信がやはり重いので、httpキャッシュの為にsqlite使いたいですけど作りが複雑になるのが目に見えてるのが悩みどころ
2013-07-14 22:59:23 via hamoooooon to @kenji_Mt
@alterakey @kimukou_26 そうですね。まだ実際にデータを入れて試した訳でもないので、作って行く最中に問題が出てきたら対処しようと思います。ありがとうございます。
@kimukou_26 @alterakey 自分も当初は、WebViewで作ろうかと思ってたんですが、ユーザーサイドの事を考えたらやはりsqliteの方がレスポンスがいいのと通信しなくていいのがメリットかなと思ったので、そちらを選択しました。
http://twitter.com/alterakey/status/356415253820604418:twitter:detail:right
http://twitter.com/alterakey/status/356416001992175617:twitter:detail:right
@alterakey @kimukou_26 ありがとうございます。まだまだ知識不足な部分があるので調べて可能かどうか確認してみます。
@kenji_Mt @alterakey 自分の場合はArrayAdopterにstringListを渡す形式で、100行=>200行表示形式にしたとき、クラッシュレポートでOOMが多発したため、起動時に空きメモリが40M切ってたら、lowMemory扱いにしてたりも(^-^;)
2013-07-14 23:27:26 via hamoooooon to @kenji_Mt
@kimukou_26 @alterakey そういう方法もあるんですね!自分、その辺りは触った事がないので勉強になります。