1

キャンバスとImageViewを使用してカスタムアナログ時計アプリウィジェットを作成しています。

ウィジェットプロバイダーのonEnabledイベントで毎分のトップにアラームを設定しました。アラームは、時計の描画を担当するBroadcastReceiverを呼び出します。

ビットマップをある時点まで保存するので、描画時間を短縮します。しかし、BroadcastReceiverはonUpdateが戻るとすぐに停止するため、ビットマップを保持できません。

まず、BroadcastReceiverに何かを保存する方法はありますか?

BroadcastReceiverの代わりにサービスを使用するのは、終了しないためです。しかし、どういうわけか私はそれがこれに良いかどうかわかりませんか?

そして、私はサービスについていくつかの一般的な質問があります:

  1. 私はどこかでサービスがAndroidシステムによって殺されるかもしれないと読みましたか?もしそうなら、AlarmManagerはそれを再開しますか?

  2. 時計を更新するためにデバイスをウェイクアップしたくありません。これは重要ではなく、デバイスの電源を入れるとすぐに更新できるためです。サービスがバックグラウンドで実行されていることをどこかで読みました。サービスを使用してAlarmManagerで呼び出すと、デバイスがスリープ状態になりますか?

そして、これは私の時計がどのように見えるかです:

ここに画像の説明を入力してください

4

1 に答える 1

1

ブロードキャストレシーバーで何かを保存したい場合は、必要に応じてsharedprefrences、sqllite、またはファイルを使用して、次回復元することができます。ストレージについて:http: //developer.android.com/guide/topics/data/data-storage.html

Broadcastreceiverは、必要なときに実行され、不要な間はシステムリソースを使用しません。サービスは、ランダムなイベント(たとえば、着信SMSなど)を待つ必要がある場合、または長いバックグラウンド処理(ブロードキャスト受信者が強制終了される)を待つ必要がある場合に使用できます。

サービスはAndroidシステムによって強制終了され、サービス自体に応じて、システムによって復元されるかどうかが決まります。この動作は、onStartCommand関数が返す値によって制御されます。START_STICKY-インテント=nullでサービスを再開しますSTART_NOT_STICKY-サービスを再開しません

他のオプションについては、こちらをご覧ください:http: //developer.android.com/reference/android/app/Service.html#START_STICKY

于 2012-12-28T15:31:03.013 に答える