diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/content/SyncStatusInfo.java | 56 |
1 files changed, 51 insertions, 5 deletions
diff --git a/core/java/android/content/SyncStatusInfo.java b/core/java/android/content/SyncStatusInfo.java index bb24ccd5a5ed..663e6e476c5a 100644 --- a/core/java/android/content/SyncStatusInfo.java +++ b/core/java/android/content/SyncStatusInfo.java @@ -24,7 +24,11 @@ import java.util.ArrayList; /** @hide */ public class SyncStatusInfo implements Parcelable { - static final int VERSION = 2; + private static final String TAG = "Sync"; + + static final int VERSION = 3; + + private static final int MAX_EVENT_COUNT = 10; public final int authorityId; public long totalElapsedTime; @@ -47,7 +51,8 @@ public class SyncStatusInfo implements Parcelable { // no race conditions when accessing this list private ArrayList<Long> periodicSyncTimes; - private static final String TAG = "Sync"; + private final ArrayList<Long> mLastEventTimes = new ArrayList<>(); + private final ArrayList<String> mLastEvents = new ArrayList<>(); public SyncStatusInfo(int authorityId) { this.authorityId = authorityId; @@ -92,6 +97,11 @@ public class SyncStatusInfo implements Parcelable { } else { parcel.writeInt(-1); } + parcel.writeInt(mLastEventTimes.size()); + for (int i = 0; i < mLastEventTimes.size(); i++) { + parcel.writeLong(mLastEventTimes.get(i)); + parcel.writeString(mLastEvents.get(i)); + } } public SyncStatusInfo(Parcel parcel) { @@ -117,15 +127,24 @@ public class SyncStatusInfo implements Parcelable { if (version == 1) { periodicSyncTimes = null; } else { - int N = parcel.readInt(); - if (N < 0) { + final int count = parcel.readInt(); + if (count < 0) { periodicSyncTimes = null; } else { periodicSyncTimes = new ArrayList<Long>(); - for (int i=0; i<N; i++) { + for (int i = 0; i < count; i++) { periodicSyncTimes.add(parcel.readLong()); } } + if (version >= 3) { + mLastEventTimes.clear(); + mLastEvents.clear(); + final int nEvents = parcel.readInt(); + for (int i = 0; i < nEvents; i++) { + mLastEventTimes.add(parcel.readLong()); + mLastEvents.add(parcel.readString()); + } + } } } @@ -149,6 +168,8 @@ public class SyncStatusInfo implements Parcelable { if (other.periodicSyncTimes != null) { periodicSyncTimes = new ArrayList<Long>(other.periodicSyncTimes); } + mLastEventTimes.addAll(other.mLastEventTimes); + mLastEvents.addAll(other.mLastEvents); } public void setPeriodicSyncTime(int index, long when) { @@ -172,6 +193,31 @@ public class SyncStatusInfo implements Parcelable { } } + /** */ + public void addEvent(String message) { + if (mLastEventTimes.size() >= MAX_EVENT_COUNT) { + mLastEventTimes.remove(MAX_EVENT_COUNT - 1); + mLastEvents.remove(MAX_EVENT_COUNT - 1); + } + mLastEventTimes.add(0, System.currentTimeMillis()); + mLastEvents.add(0, message); + } + + /** */ + public int getEventCount() { + return mLastEventTimes.size(); + } + + /** */ + public long getEventTime(int i) { + return mLastEventTimes.get(i); + } + + /** */ + public String getEvent(int i) { + return mLastEvents.get(i); + } + public static final Creator<SyncStatusInfo> CREATOR = new Creator<SyncStatusInfo>() { public SyncStatusInfo createFromParcel(Parcel in) { return new SyncStatusInfo(in); |
