久々にAndroid。
ランダム再生の方は、やるなら通常再生機能もひとまとめにしたい(それにアルバムランダムはあれから登録アプリが出てきた)のでちょっと大掛かりになるから後回し。その前に必要な小物アプリが、ちょっと機能不足で困っている&また探すのもめんどくさい、で実際作るのも難しくなさそうなので製作検討中。
その基礎固めでServiceの動作を追っていたところ、どうにも思うように動かない。とっかかりの基礎的な構造だというに、いくら組み直してみても公式ドキュメントの説明通りにならない。あれこれ探してみても公式ドキュメントに倣った説明しか出てこなくてまるで原因がつかめない。すっかり萎えてしまった(苦笑)。
やりたかったのは常駐サービスで、スタート時にSTART_STICKYを返してプロセスをkillすると、本来はonCreateとonStartCommandが続けて呼ばれる筈なのに、何故かonCreateしか来ない。(公式ドキュメント、和訳版)
しかし後日改めて調査したところやっと原因が見付かった >こちら。(START_STICKYの語を外して調べたら出てきた罠)
一言でいえばAndroidのバグ。Gingerbread(2.3系)のバグ。やられましたよ、ピンポイントで(苦笑)。今まで問題がある時って必ず自分の問題だったからなぁ。油断してたというか。
っていうか昔からあるシステムだろうに、よりにもよってこのバージョンで仕込んでくれるなよと。今現在一番シェアの高いバージョンだろうと。アップデートで直せよと(うちは2.3.6だけど駄目)。だいたい、こんな基礎的な挙動で、ねぇ。
Androidはただでさえバージョン問題が拙く言われていて、ちょっと変えてまた変えてなんてことを繰り返している上に、こんなバージョン依存のバグまで仕込まれたら、ちょっと流石に勘弁してくれよと言いたくなる。まぁまだこんなもの序の口なんだろうけどね。
Googleも昔作った拙いシステムはさっさと捨てたいからver4だの5だのと言ってる訳だけれど、そうじゃなくてまず今をどうするかなんじゃないかと思うよね。一体この先どうなるのかなぁ、ホント。
などと愚痴るところまで。