0

TextView を拡張してストップウォッチとして機能するカスタム Chronometer があります。このクロノメーターを使用するアクティビティは、サービスからのブロードキャストをリッスンしています。このブロードキャストでは、サービスはアクティビティ (したがってクロノメーター) にカウントを停止するように指示します。これは、アプリケーションをフォアグラウンドに保持している場合にうまく機能します。

ただし、アクティビティがアクティブでない場合 (ユーザーがホーム ボタンを押すなど)、アクティビティはブロードキャストを取得せず、クロノメーターはカウントを続けます。そのため、アクティビティを再度開くと、クロノメーターはカウントアップされるべきではありませんが、まだカウントアップしています。

誰がこの問題の解決策を教えてくれますか?

注: サービスには、アクティビティやクロノメーターに関する知識はありません。それは単にブロードキャストを送信するだけです。

4

1 に答える 1

1

あなたのサービスは startForeground(int id, Notification notification);

理由を見てください...

ちなみに、BroadcastReceiverアクティビティ内で登録を解除しないでください。これを実現するには、インテント フィルターCOUNTDOWN_STOPなどを使用してマニフェストに追加します。

于 2012-08-19T12:36:25.537 に答える