Androidで時計ウィジェットを作成するときにACTION_TIME_TICKを利用しようとしたがうまくいかなかった
Nixie Clockについて、省電力モードの時には秒表示を止めて分ごと画面更新を行う、という案も考えたことがあった(より「らしい」見せ方に気付いたので廃案にしたが)。
この際、ACTION_TIME_TICKというアクションを受け取るようにすれば正しいタイミングで描画更新が出来るのではないかと考え、少し試してみたのだがうまくいかなかった。
上記リファレンス(Javadoc)には以下のように記載されている。
You can not receive this through components declared in manifests, only by exlicitly registering for it with
Context.registerReceiver()
つまり、AndroidManifest.xml中で<intent-filter>設定を行っても有効ではなく、ソースコードで実装する必要がある、ということらしい。
そこで、AppWidgetProvider#onEnabledでregisterReceiverを呼んでみるように変更したのだが、これもうまくいかない。
この点についても、リファレンスを読んでみると
this method cannot be called from a
BroadcastReceiver
component
と書かれていた(AppWidgetProviderはBroadcastReceiverの子クラス)。
ここまで確認して止めてしまったので、本来どう実装すべきだったのかは未確認。AnalogClockクラスがAppWidgetで利用できるようなので、これを利用するのだろうか[参考]。
AppWidgetProviderインスタンスのライフサイクルが全然理解できていないのが問題なのだろうな...
« Nixie Clock - Android用秒表示時計(Desktop Widget) | トップページ | MacOS/Linuxへの対応 (ipum ver.0.4) »
この記事へのコメントは終了しました。
« Nixie Clock - Android用秒表示時計(Desktop Widget) | トップページ | MacOS/Linuxへの対応 (ipum ver.0.4) »
コメント