1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HTL23で処理落ちした話

1
Posted at

Twitterクライアントを作成している時、デバッグ端末の一つであるHTL23を使っている際に発生した謎の処理落ち現象についてのメモを残しておきたいと思います。

どのぐらいの処理落ちだったか

とにかく何をするにも遅い。
例えばEditTextに文字を入力しようとし、キーボードが出てくる際AndroidManifest.xmlに
android:windowSoftInputMode="adjustResize"
などと書いておくと自動で画面のリサイズを行ってくれますが、そのリサイズに2秒は軽く待たされる程度には処理落ちが激しかったです。

解決しようと実行した手段

  • ほぼすべてのViewに対して手動で描画更新を行う

しかし描画自体が処理落ちによってスキップされてるため解決には至らず。

  • 同期処理を非同期処理に置き換える

今回の問題に対しては全くの効果なし。

  • Viewの階層を見直す

これも効果は全くなし。

  • AdapterのgetView()を見直す

コードは整理されたけどこれも効果としてはほぼ無いに等しい。関係ないけどgetView()がすぐにスパゲッティと化するのは考えものである。

  • Viewを一部非表示にしてみたりする

いくつかViewを非表示にすると処理落ちが無くなり効果があった模様

どのViewが処理落ちの原因だったのか

原因はズバリImageViewでした。
ですがすべてのImageViewがという訳では無く、大きな画像を小さく表示すると処理落ちが起きるようです。

ImageViewは大きな画像でも小さく表示する際リサイズを行ってくれますが、どうやらHTL23はこの動作がかなりの苦手分野のようで、IS11CAなどのかなり初期の端末にも負けるようです。

どうも「大きい画像一つ用意しておけばなんとかなる」と思ってたのがこの処理落ちを発生させてしまったようです。
幸いなことに、画像が大きいのであれば適切なサイズのものを生成してくれるWebサービス(今回使用したのはAndroid Asset Studioというサービス)があったりするので利用してみるのも良いかと思います。

また今回はHTL23で確認されたことですが、他の端末でも起きないとは限らないのでこの際に適切なサイズのアイコンを生成しておくと後で変なトラブルにはならないと思います。

結論

リソース画像は適切なサイズのものを生成しましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?