2017-02-23 191 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ü從那個時候你知道剩下的時間內得到, 和最佳的方式在這種情況下,以移動數據到活動使用

intent.putExtra 

在這裏閱讀更多:

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

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

+0

但如果應用程序關閉,則所有數據將被刪除 – suman

+0

@suman在這種情況下,您最好的選擇是啓動一個IntentService。它在後臺運行,並在完成後自動停止。完美匹配你。在此服務中,您啓動CountDownTimer並在onTick()中發送本地廣播消息到您的LocalBroadCast接收器。這個接收器你將在你的活動中註冊。不要忘記在onStart()中註冊並註銷onStop()(你的Activity的生命週期方法) –

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