2013-12-12 3 views
0

나는 안드로이드에서의 교통량 측정에 대해 조사 중이다. 나는 Galaxy S4를 개발 중이며 분당 1 회 TrafficStats API를 수신하고 누적 된 트래픽 (AKA BaseTraffic)을 SharedPreference에 저장하고 현재 트래픽에서 BaseTraffic을 뺀 값을 데이터베이스에 저장하는 서비스를 프로그래밍했습니다.Android TrafficStats - 크기가 너무 크면 버그가 발생합니까?

짧은 기간 (15 분) 동안 TrafficStats는 큰 값 (분당 1.6GB)과 동일한 값을 반환합니다. 누군가 버그 또는 기타 문제인지 알 수 있습니다. 여기에이 코드를

public class TrafficTracker { 

    public static long getCurrentTraffic() { 
     long traff = 0; 
     traff = (TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes()); 
     if (traff > 0) { 
      return traff; 
     } else { 
      throw new UnsupportedOperationException("TrafficStats not supported"); 
     } 

    } 

    public static long getTrafficWithOutBase(long baseTraffic) { 
     return TrafficStats.getTotalTxBytes() + TrafficStats.getTotalRxBytes() - baseTraffic; 
    } 
} 

그리고 전화 : 내가 찾은

if (preferences.getBaseTraffic() != null) { 
    if (TrafficTracker.getCurrentTraffic() > preferences.getBaseTraffic().getByteTraffic()) { 

     TrafficObject trafficObject = new TrafficObject(new Date(calendar.getTimeInMillis()), TrafficTracker.getTrafficWithOutBase(preferences.getBaseTraffic().getByteTraffic())); 
     daoTraffic.create(trafficObject); 

     preferences.setBaseTraffic(new TrafficObject(new Date(System.currentTimeMillis()), preferences.getBaseTraffic().getByteTraffic() + trafficObject.getByteTraffic())); 

    } else {//when stats are reseted    
     TrafficObject trafficObject = new TrafficObject(new Date(calendar.getTimeInMillis()), TrafficTracker.getCurrentTraffic()); 
     daoTraffic.create(trafficObject); 
     preferences.setBaseTraffic(trafficObject);   
    } 

} 

** UPDATE **

excel dump

내 코드는 트래픽을 얻을의 옆에 내 오류 :). 대신> = 대신 사용하십시오. 데이터 또는 무선 랜과의 연결이 끊어지면 제대로 작동합니다.

if (TrafficTracker.getCurrentTraffic() >= preferences.getBaseTraffic().getByteTraffic()) 

답변

0

내 오류가 발견되었습니다. :). 대신> = 대신 사용하십시오. 데이터 또는 무선 랜과의 연결이 끊어지면 제대로 작동합니다.

if (TrafficTracker.getCurrentTraffic() >= preferences.getBaseTraffic().getByteTraffic())