У меня есть служба (у Службы есть приемник вещания, который прослушивает ACTION_BATTERY_CHANGED
), что я хочу рассчитать время между двумя временными метками, это то, что у меня есть:вычислить прошедшее время (вторая отметка времени - первая метка времени)
public void onReceive(Context context, Intent intent){
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
long time;
long startTime=0;
if(OldLevel==0){
OldLevel=level;
startTime = System.nanoTime();
}
else{
time=System.nanoTime()-startTime;
startTime=System.nanoTime(); //edited
Log.e("inFFFF","FFFF "+time);// I somehow here get 16243428223995 nanoseconds which are too large because in reality it just take 1-2min.
}
}
Если у вас есть возможность: 1. Расскажите мне, почему время больше ожидаемого. 2. Или предложите лучший способ рассчитать время, прошедшее.
Есть ли причина, почему вы не используете 'System.currentMillis()'? Конечно, это менее точно, но может быть, эта альтернатива достаточно хороша, не так ли? – Trinimon
Я использовал миллисы раньше, неточно результат:/ – whiteLT
@whiteLT, если первое условие истинно, чем оно никогда не перейдет к другому, поэтому в то время одно условие будет удовлетворять, поэтому вы получите фактическое время, но не истекшее time – Pragnani