シナリオ時間のユーザ設定量の後にコードを発射する2つの方法:45分後..
ユーザーのEditTextに45(分)を入力し、「OK」ボタンを押下
しました私はコードのブロックを実行したいです。
私はこれを行うための2つの異なる方法の間で議論しています - WHYH IS BESTは&なぜですか?
オプション#1 - AlarmManager - > PendingIntent - >インテント - >でBroadcastListener
どの実装が最適ですか?
int timeValue = Integer.parseInt(editText_timer_value.getText().toString());
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(this, TimerReceiver.class);
PendingIntent pendingIntent = PendingIntent
.getBroadcast(this.getApplicationContext(), 234324243, intent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + (timeValue * 60000), pendingIntent);
finish();
// TimerReceiver.class fires when the time is up, and contains additional Code.
(OR)
オプション#2 - インテント - >意図エクストラ - >サービス - > CountDownTimer
String timeValue = editText_timer_value.getText().toString();
Intent intent = new Intent(this, TimerService.class);
intent.putExtra("TIMER_VALUE", timeValue);
getApplicationContext().startService(intent);
finish();
// TimerService.class starts immediately and runs a CountDownTimer from intent Extras
"より良い" または "正しい" で実装SO、そしてWHY?
ありがとうございます! :)
PS ..他の提案も非常に歓迎されています!
私の質問へのあなたの洞察力に感謝します..私のアラームマネージャの実装は正確に見えますか?再び、注意してください:ユーザーは、アラームが設定される時間(何分か選択します)を入力すると、タイマーがバックグラウンドで実行されている間にアクティビティウィンドウが閉じられます。だから私はタイマーがどうにか中断されないことを確認したい。電話機が再起動された場合、それ以外は問題ありませんが、タイマーが何とか殺されないようにしたいと思います。あなたはオプション#1が最善の選択肢であるというあなたの意見に支えられていますか? – StudioB
あなたがドキュメントを読むと、AlarmManagerを使用してある程度の時間が経過した後にいくつかのタスクを実行しなくてはならないときに何をするべきか、そしてELAPSED_REALTIMEなどの4つの異なる方法でアラームを設定することができます。 ELAPSED_REALTIME_WAKEUP、RTC、RTC_WAKEUPここでは、4つ以上の異なるタイプの動作が異なるため、非常に注意する必要があります。少し実験を行い、ドキュメンテーションからそれらについて学び、あなたのニーズに最も適したものを見つけてください。 https://developer.android.com/training/scheduling/alarms.html – xFighter
最後に2つの質問..アラームマネージャの拡張子 '.set'(' alarmManager.set'のように)が上の例で私のコードでは横切っていますか?それは減価償却される可能性があります..それは事実ですか?これは問題を引き起こす可能性があります..そして最後に、そうでなければ正しく実装されたように見えますか?たとえば、ユーザー入力の整数iに60,000を掛けてmsを分にすると、問題が発生する可能性があります。これは 'int'ではなく' long'である必要がありますか?私の例のように 'int'を使っても動作しますか?これらの2つの問題が両方とも大丈夫であることを確かめたいだけです..... – StudioB