2016-07-10 3 views
2

私はAlarmManagerについて学び、それを使いこなそうとしました。私が理解できるようにアラームが、それは次のコードのようにXのミリ秒後に呼び出される必要があることを言うことによって設定されます。数ヶ月後に呼び出されるアラームの作成方法は?

am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (sec * 1000), pendingIntent); 

しかし、それは時間の長い期間に来るとき、私は、システムのパフォーマンスが心配です。

通知を有効にするアラームを設定する必要がある場合は、10か月後に何をすればよいですか?必要な期間をミリ秒単位に変換して同じ方法で渡す必要がありますか?あるいは、長期間に渡って作業する他のより効率的な方法がありますか?

+0

まず、再起動するとすべてのアラームがキャンセルされることを考慮する必要があります。したがって、このアプローチがまったく機能しないことはほとんどありません。それはちょうど10ヶ月でなければならないのですか?他の方法としては、インストール時間(またはどの時間から始めるか)を例えばSharedPrefsを起動すると、アプリの起動または起動が完了すると、それに応じて時間がチェックされます。 – Endzeit

+0

あなたは正しいです。私は、電話がシャットダウンされるとすべてのアラームがキャンセルされることを読んだ。しかし、アプリでは、アプリのメモリに登録されているイベントごとに通知する必要があります。この問題を解決するために私はこの答えを見つけました。あなたはそれについてどう思いますか? http://stackoverflow.com/questions/9671174/alarmmanager-delete-all-schedules-on-power-off – Marat

答えて

2

はい、ミリ秒単位で渡す必要があります。なぜあなたはそのことからパフォーマンスが心配しているのか分かりません。小さいものではなく大きな値を渡すパフォーマンス・フォームの損失はありません。あなたの唯一の本当の問題は、Xヶ月で行うことです、月の長さは定期的ではありません。私は終了時間のためのカレンダーオブジェクトを作成し、それを正しく得るためにミリ秒に変換したいと思います。

+0

もちろん、私はカレンダーオブジェクトとの時差を取るでしょう。しかし、私はちょうどそれが多くの電話に影響しないことを確認する必要がありました。私はその場で何が起こっているのか分からなかった。 Thats all) – Marat

+0

@Maratこれは理論上は機能するかもしれませんが、アラームが再起動しても残っていないので、このアラームが呼び出されることはほとんどありません。電話機を再起動した場合のフォールバック解決策を検討することをお勧めします。 – Endzeit

+0

数ヶ月で私の電話機を再起動したとは思わないが、はい、再起動を検討する必要があります。通常の解決策は、レシーバーを起動してそのレシーバーでアラームを書き換えて再起動すると再起動することです。 –

0

すでにされているどのくらいの期間のアラームを設定するには、この

int month = 2; 
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 30*month, pendingIntent); 
0

のように使用しますが、上記について説明します。 システムがオフになったらアラームがキャンセルされるため、デバイスが再起動されるとアラームをリセットするかどうかを確認するだけです。

link here

関連する問題