2016-09-03 7 views
2

ユーザーが定期的に使用するアプリケーションを設計しています。ユーザーが特定の期間に支払った場合、その期間有効なサーバーから領収書が発行されます。このアプリは「オフライン」で使用するように設計されているため、インターネットからの接続のみでサーバーからの領収書を受け取ることができます。定期的にバックグラウンドでサービスを実行する

「オフライン」モードでは、ユーザーが支払いを再開するまでの間、支払い済みの期間をアプリは待機します。これを実装する際に問題が発生しています。

まず、常に実行中のバックグラウンドサービスを使用しようとしました。しかし、https://stackoverflow.com/a/2682130/5753416http://www.androidguys.com/2009/09/09/diamonds-are-forever-services-are-not/を読んだ後、AlarmMangerを使用して定期的なアラームをスケジュールして支払いを確認することにしました。

ユーザーが時刻/日付を変更したときにアラームが表示されるようになりました。 Intent.ACTION_TIME_CHANGEDとIntent.ACTION_DATE_CHANGEDブロードキャストを聞いていますが、より前にに設定すると、ブロードキャストではありません。

私の質問は、同様の機能を実装する正しい方法です。アドバイスをいただければ幸いです。

編集

issues with the broadcast

ASOP bug issue

+0

いくつかのコードを教えてください。 –

+1

どの部分が必要ですか?この機能は「1か所」で実装されていないため、私はこれを尋ねます。しかし、私たちは放送を聴く際に標準的なものを使用しました。 – fuadj

+0

これらのIntent.ACTION_TIME_CHANGEDとIntent.ACTION_DATE_CHANGEDブロードキャストを聞いている場所と所在地 –

答えて

0

あなたが何をする必要があるか一つの解決策はありますが、チェック電話アップ時間である時間かによってかもしれ好きにはいくつかの時間のためのアラームをスケジュールすることができますので、あなたの周波数で。だからあなたがしなければならないことは、ユーザが支払われたときの携帯電話の稼働時間+継続時間をチェックし、それが経過してからサブをキャンセルすることです。チェックする必要がある唯一の余分なものは、ネットがサービスにアクセスするために接続されると、電話が再起動するかどうかです。

+0

私がアラームに直面した問題は、時計を "巻き戻す"と発火しないということです。例えば、現在の時間が8で、1時間後にアラームを発して9に設定すると、ユーザーが時間を5に戻すと、アラームは4時間発火しません。これは、日付が巻き戻されるときにのみ悪化します。だから私はTIME_SETとDATE_SETの放送を聞いてみようとしています。しかし、それは時計が過去に戻ったときには機能しません。私はその問題に関する私の質問にリンクを含めました。 – fuadj

関連する問題