2017-02-23 23 views
0

アラームマネージャを使用して、ある分後に仕事をしました。しかし、私はその活動を開くたびに残りの時間を見つける必要があります。それを行う方法は?残り時間の取得方法は?

Intent myIntent = new Intent(Activity1.this, Activity2.class);     
pendingIntent = PendingIntent.getService(Timeractivity.this, 0, myIntent, 0); 
int time = Integer.parseInt(time_et.getText().toString()); 
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(System.currentTimeMillis()); 
calendar.add(Calendar.MINUTE, time);     
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent); 
Toast.makeText(Timeractivity.this, "You set an timer of " + time + " minutes", Toast.LENGTH_LONG).show(); 
+0

は、イベントが(例えば、午前14時00分)に予定された時間を取得し、現在の時刻(例えば13時20分)を引く:

は、ここに私の完全な答えを確認してください。結果として0:20を取得する必要があります。 – DBX12

+0

サンプルコードをお願いします! – suman

+0

回答に記載されている例を使用することをお勧めします。コンパイル時に実例を提供していないので、私はそれを書きました。 – DBX12

答えて

2

これは、私が移動するような場合にはCountDownTimer が、その後onTickにuはuが残り時間を知っているその時から取得、 と最善の方法を使用することをお勧めし タイマーを行うには良い方法ではありません活動へのデータは

intent.putExtra 

を使用しているより、ここで読む:

https://developer.android.com/reference/android/os/CountDownTimer.html

https://developer.android.com/reference/android/content/Intent.html

+0

しかし、もしアプリケーションが閉じれば、すべてのデータは消去されます – suman

+0

@この場合の最良の選択肢は、IntentServiceを起動することです。これはバックグラウンドで実行され、自動的に終了します。あなたにぴったりのマッチ。このサービスではCountDownTimerを起動し、onTick()ではLocalBroadCast受信者にローカルブロードキャストメッセージを送信します。このレシーバーはあなたの活動に登録します。 onStart()に登録してonStop()の登録を忘れないでください(アクティビティのライフサイクルメソッド) –

0

これを試してみてください:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     Long NexClockTime = alarmManager.getNextAlarmClock().getTriggerTime(); 
     Long now = System.currentTimeMillis(); 
     Long timeLeft = NexClockTime - now; 
+0

getNextAlarmClock()がAPI 21で追加されました –

0
java.util.Date EndTime; //time from you are calculating remaining 
java.util.Date CurrentTime = null; // current time 
SimpleDateFormat dateFormat2 = new SimpleDateFormat("HH:mm:ss"); 
CurrentTime = dateFormat2.parse(dateFormat2.format(new java.util.Date())); 
EndTime = dateFormat2.parse(time_in_string); 
long remaining_time = EndTime.getTime() - CurrentTime.getTime();//in milliseconds 
0

あなたは、タイマーを作成し、そのonTickメソッドをオーバーライドする必要があります。次に、希望の間隔で変数timeleftを更新できます。 https://stackoverflow.com/a/46012948/2351486

関連する問題