Мне нужно рассчитать разницу во времени в часах, минутах и секундах и время обновления моей активности запуска через каждую секунду. Я использую этот код.Вычислить время Разница между текущим временем и временем в будущем, после каждой секунды
private Handler handler=new Handler() ;
private Runnable updateTimeTask = new Runnable() {
@Override
public void run() {
updateTime();
//handler.postDelayed(updateTimeTask, 1000);
}
}; @Override
protected void onResume() {
super.onResume();
int delay = 1000; // delay for 1 sec.
int period = 1000; // repeat every 4 sec.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
handler.post(updateTimeTask);
}
}, delay, period); }
private void updateTime() {
final TextView time = (TextView) findViewById(R.id.txtViewTime);
final TextView date = (TextView) findViewById(R.id.txtViewAlarmDesc);
pref = new Prefs(this);
String goal_dateTime= pref.getValue("first_goal_dateTime", "");
Date d1 = Utils.strToDate(goal_dateTime);
Calendar cal = Calendar.getInstance();
if(d1!=null && d1.after(new Date()))
{
cal.setTime(d1);
}
Date cur = new Date();
Calendar cal_cur = Calendar.getInstance();
cal_cur.setTime(cur);
final SimpleDateFormat formatterTime = new SimpleDateFormat("H:mm");
long milliseconds1 = cal.getTimeInMillis();
long milliseconds2 = cal_cur.getTimeInMillis();
long diff = milliseconds1 - milliseconds2;
long diffSeconds = diff/1000;
long diffMinutes = diff/(60 * 1000);
long diffHours = diff/(60 * 60 * 1000);
long diffDays = diff/(24 * 60 * 60 * 1000);
time.setText(diffHours + " : " + diffMinutes+" : "+diffSeconds);
date.setText(String.valueOf(diffDays+" days left to complete goal"));
}
Но когда я первый раз начала деятельности, он отлично работает, и когда я начать другую деятельность от нее и вернуться к нему снова, приложение просто зависает и появляется черный экран, и после того, как много времени это дает мне ошибки как ANR, keydispatchtimeout.
Я попробовал несколько решений, как вызов моего updateTime() в отдельном потоке, но он дает мне ошибку, что «только оригинальному поток, который создал иерархию вида может коснуться его точка зрения.»
любого вида помощи будут оценены. Большое спасибо заранее.
с уважением, Munazza K
Большое спасибо Дамиан, моя проблема решена. Я застрял много дней. Спасибо тебе большое. – Munazza