投稿

3月, 2012の投稿を表示しています

Android:Dialogとメモリ解放後の起動

Androidの2.xでDialogを使うとき、onCreateDialog()をオーバーライドして作成するのが正しいやり方っぽい。 その機構を使うことでDialogのリソース管理をActivityが行なってくれるようになり、アプリ側ではその解放処理を考える必要が無くなるからだ。 解放処理以外にも、例えば、ボタンがタップされた時にダイアログを開くとした時、自前でDialog#show()すると、連打された時、その分ダイアログが開いてしまうが、Activity#showDialog()の機構を利用すると、以前のDialogを閉じてから開いてくれるなど、排他処理も行なっている。 そして、Activity#removeDialog()というものがあって、それは管理しているDialogのリソースを解放してくれるらしいのだが、ここでワナ発見。 アプリが復帰する時、ダイアログは閉じておきたいと思い、Activity#onPause()でActivity#removeDialog()してみた。 しかしながら恐ろしいことに、メモリクリア後にアプリを再開しようとした時、Androidったら、表示する必要のないはずのダイアログをActivity#onCreateDialog()で作成しに行くじゃありませんか。 ・・・と思ったら、Android4.0だけかもしれない。 手元のAndroid2.3.5端末ではonCreateDialogを呼んでいないようだ。。 どちらにしても、Activity#onCreateDialog内の処理も、「メモリクリア後の再開」を考慮しておかなくちゃなのね・・・

Logicool ワイヤレス スピーカー アダプターを買ってみた

イメージ
以前書いた ロジクールの「 普通のスピーカーをBluetooth対応にしてしまうアダプター 」を買ってみた。 大きさは、下の写真にあるように食塩より一回り大きいような大きくないようなそんな感じだが結構厚みを感じる印象。 というわけでリビングに置いてあるKENWOOD K'sの外部入力に接続してみた。 電源がACコードしかないことにちょっとびっくりしたが、最終的にアンプに付いている外部コンポーネント用コンセントを使うことで、アンプの電源を入れている時だけ電源が入るようになったので全く問題なし。 XOOMとのBluetooth接続も全く問題なし。 音質も特に問題は感じなかった。 (細かいところを聞き分ける耳もないので。。) それにしても便利な世の中になったものだ~。 コードで接続することなく、CDも不要になり、Youtubeをリビングのアンプで聴けるなんて。

Android:解像度違いの画像が正しく認識されない

hdpiの端末のはずなのに、なぜか「drawable-hdpi」ではなく「drawable-mdpi」の画像が使われてしまう現象が発生していて、しばらく悩んでいた。 ようやく解明した。 AndroidManifest.xmlのanyDensityの設定がfalseにされていた。 (参考ページ: http://y-anz-m.blogspot.com/2010/02/android-multi-screen.html ) これだから 保守不能ソース ってヤツは。。 ちなみに、trueにしたら、あちこちの画面のレイアウトが崩れた(笑) -- 2012/04/26追記 autodensityがfalseの場合、ToastにDensityが適用されないという問題も発覚。 つまり、Toastがやけに小さくなってしまうということだ…。

Android:メモリ解放とアプリ再開の問題の再現

Androidったら、アプリをVMごと停めてしまうくせにそのActivityから再開しようとするニクいヤツだ。 アプリの先頭ではないのにClassLoadから始まっているってことが、 絶妙なイヤらしさ。 メモリ解放したら強制的にアプリの最初から動いてくれれば話は単純なのにね。 (もしかしたらAndroidManifest.xml辺りでそういう設定できそうだな・・・) さらにイヤらしいのは、その動作しても大丈夫だよねっていう確認方法だ。 一体いつメモリが解放されるのかわからなくて、他のアプリを色々起動してみても 再現しなくて諦めたころ発生するという、非常にムキーッ!状態になる。 しかし、よくあるメモリ管理ツールでメモリ強制解放を行うと、その状況が再現できることに気づいた。 (もしかしたら知らないツールがSDKに既に存在していたら悲しい限りだが・・・) 例えば「メモリブースター」っていうアプリの「ワンクリック高速最適化」っていう機能。 (なんだか怪しいので本当はインストールしたくないのだが・・・) これを使ったら一発で発生した。 あとはバグを直すだけだ。。 -- 2012/03/15 メモリブースターはAndroid4.0(104SH)で動かなかった。FMR Memoryは動いた。

なんでもBluetoothスピーカー

今までありそうでなかった 「普通のスピーカーをBuletooth対応にしてしまう」 アダプターがロジクールから発売されたらしい。 http://plusd.itmedia.co.jp/pcuser/articles/1203/06/news030.html これがあったら、家のステレオとXOOMが タップ一発で無線接続できてしまうということだ! すげぇ、CDプレイヤーが本格的に不要になる。。 それに家の中を移動するのにスピーカーとXOOMを持つ必要がなくなる …まぁ、そんなのはワタクシだけだと思うが (「 CREATIVE D100を買ってみた 」参照) 音質はどうだかわからないが、 シャレで買ってもいいくらいの値段だ。 (逆に言うとあまり期待できそうにない程度の値段だ…) -- というわけで、買ってみた記事はこちら → Logicool ワイヤレス スピーカー アダプターを買ってみた