Blog -
Androidの開発をやっていると、Viewの更新をぐりぐりやる処理を作ったりする。
WidgetのImageViewに対してServiceからRemoteViewを経由して
setImageViewBitmapを更新する処理の開発を行っている時にどうもカクカク(処理遅延の様な)したり更新されなかったりする時が有る。
そんな時LOGには
!!! FAILED BINDER TRANSACTION !!!
が連発している事が多いですが、その原因と対処法について
原因は、RemoteViewのsetImageViewBitmapを呼び出すと引数のBitmapを
シリアル化して渡す、その時のメモリが累積してIPCの許容を超えると発生します。
1.RemoteViewをService内で使いまわしている
2.大きな画像をBitmapに指定している
対処法として
1の場合は、
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.レイアウトID);
といったように毎回定義しなおすと回避できる。
2の場合は、
Bitmapのサイズを小さくするもしくは、Bitmap.Config.RGB_565を指定する
アルファチャネルが使えないのが痛いが、背景ならなんとか。
参考までに、2*2のサイズのPNGは大丈夫でした。
また、Eclipseのデバッグ(実機)などで何をしても発生する場合、実機のAPKを一度アンインストールすると直る事が有ります。
(自分はこれにハマりました)
WidgetのImageViewに対してServiceからRemoteViewを経由して
setImageViewBitmapを更新する処理の開発を行っている時にどうもカクカク(処理遅延の様な)したり更新されなかったりする時が有る。
そんな時LOGには
!!! FAILED BINDER TRANSACTION !!!
が連発している事が多いですが、その原因と対処法について
原因は、RemoteViewのsetImageViewBitmapを呼び出すと引数のBitmapを
シリアル化して渡す、その時のメモリが累積してIPCの許容を超えると発生します。
1.RemoteViewをService内で使いまわしている
2.大きな画像をBitmapに指定している
対処法として
1の場合は、
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.レイアウトID);
といったように毎回定義しなおすと回避できる。
2の場合は、
Bitmapのサイズを小さくするもしくは、Bitmap.Config.RGB_565を指定する
アルファチャネルが使えないのが痛いが、背景ならなんとか。
参考までに、2*2のサイズのPNGは大丈夫でした。
また、Eclipseのデバッグ(実機)などで何をしても発生する場合、実機のAPKを一度アンインストールすると直る事が有ります。
(自分はこれにハマりました)
トラックバック
トラックバックpingアドレス http://three-thread.sakura.ne.jp/tt/modules/d3blog/tb.php/23
参照元
- Discount Oakley Sunglasses2014-3-10 21:34
- ">http://www.actwhynot.com/" target="_blank">Fitflop Sale</a> bster, discovered by <a href="http://www.lbdaw.com/" target="_blank">Fitflop Sale Singapore</a> Jasper White's Summer Shack and caught off Winter Harbor, Maine, is being held at the New Fitflop Sale England Aquarium for the Biomes Marine Biology C <a href="http://www.nalagila.com/" target="_blank">Fitflop Singapore Sale</a> enter in Rhode Island
引用:[p][bold][/bold] wrote:
引用:[p][bold][/......more