Ниже приведен рабочий код без использования java.time.LocalDateTime Вы можете внести необходимые изменения, если хотите использовать это
Вы можете использовать общие настройки, чтобы сэкономить времяв действии A.
Для экономии времени:
SharedPreferences preferences = null;
preferences = act.getSharedPreferences("your_name", Activity.MODE_PRIVATE);
preferences.edit().putString("TIME", getCurrentTimeDate())
.commit();
Используйте это, чтобы получить время:
private String getCurrentTimeDate() {
Calendar calendar = new GregorianCalendar();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
return formatter.format(calendar.getTime());
}
Теперь есть 2 решения:
Установите таймер в качестве службы, и он будет работать в фоновом режиме и обновлять время
Извлекайте данные из SharedPreferences и вычисляйте разницу каждый раз, когда хотите отобразить значение.
Выберите параметр в соответствии с количеством раз, которое вы хотите отобразить эти данные
Чтобы вычислить разницу в активности B:
Calendar calendar = new GregorianCalendar();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SharedPreferences shared = getSharedPreferences("your_name", MODE_PRIVATE);
String saved_time = (shared.getString("TIME", ""));
Date date = null,date2 = null;
try {
date = formatter.parse(saved_time);
} catch (ParseException e) {
e.printStackTrace();
}
String currentTime = getCurrentTimeDate();
try {
date2 = formatter.parse(currentTime);
} catch (ParseException e) {
e.printStackTrace();
}
printDifference(date,date2);
Методы: Используйте тот же самый getCurrentTimeDate, указанный выше, в этом упражнении тоже
public void printDifference(Date startDate, Date endDate){
//milliseconds
long different = endDate.getTime() - startDate.getTime();
System.out.println("startDate : " + startDate);
System.out.println("endDate : "+ endDate);
System.out.println("different : " + different);
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
//long elapsedDays = different / daysInMilli;
//different = different % daysInMilli;
long elapsedHours = different / hoursInMilli;
different = different % hoursInMilli;
long elapsedMinutes = different / minutesInMilli;
different = different % minutesInMilli;
long elapsedSeconds = different / secondsInMilli;
System.out.printf(
"%d hours, %d minutes, %d seconds%n",
elapsedHours, elapsedMinutes, elapsedSeconds);
}