ベテラン・プログラマの密かなつぶやき

日々の仕事で得たプログラミングの知識を咀嚼してまとめています

Android TextVewが遅い

再び、Androidアプリ開発のお話です。

画面を構成するときにテキストを表示するコンポーネントとしてTextViewはよく使われる物の一つだと思う。

しかしこれが使い方によって画面を非常に重くさせてしまう。

多分、これが内部で保持している文字列に問題があるのだと思うのだが、この文字列を定期的にスレッドで更新をかけて表示内容を変えていくというシステムを作った時に、ある期間を過ぎたあたりから画面が非常に重くなり、ボタンも効かなくなって非常に困った。

TextViewで保持している文字列はべたな文字列で単純に追加していくと、特定の位置を調べるのにいちいち文字列検索してやらないといけなくなる。

多分それが負荷を大きくする原因なのだろう。この文字列を外部でArrayListに保存して行単位に管理できるようにして、行の位置を簡単にとらえられるようにしただけで、この問題は解消した。

ただTextViewに入れる文字列を最大100行ぐらいで押さえておかないと、やっぱり重くなる。

文字列の連結に時間がかかっているのか、TextView内での画面表示に時間がかかっているのか、そこはよくわからなかった。

もう少しすっきりとした解答を得たかったが、今回は時間がなくこれで良しとした。

まだまだ奥が深い。