diff options
author | Jeff Sharkey <jsharkey@android.com> | 2012-06-07 11:25:52 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-06-07 11:25:52 -0700 |
commit | c5b582cebe167264106df5fa7b2ae7312cd456ce (patch) | |
tree | 9e2f080fe737db6b1951ce96b541461739ad0d53 | |
parent | a155651109589b4bf69c9af7e1d515b6b26cb3fe (diff) | |
parent | f918429d0c1927a19d688baa26a07c2c65765580 (diff) | |
download | android_packages_providers_DownloadProvider-c5b582cebe167264106df5fa7b2ae7312cd456ce.tar.gz android_packages_providers_DownloadProvider-c5b582cebe167264106df5fa7b2ae7312cd456ce.tar.bz2 android_packages_providers_DownloadProvider-c5b582cebe167264106df5fa7b2ae7312cd456ce.zip |
am f918429d: Uniform "when" to avoid flashing notifications.
* commit 'f918429d0c1927a19d688baa26a07c2c65765580':
Uniform "when" to avoid flashing notifications.
-rw-r--r-- | src/com/android/providers/downloads/DownloadNotification.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/com/android/providers/downloads/DownloadNotification.java b/src/com/android/providers/downloads/DownloadNotification.java index 81209b2b..bbd39f60 100644 --- a/src/com/android/providers/downloads/DownloadNotification.java +++ b/src/com/android/providers/downloads/DownloadNotification.java @@ -24,6 +24,7 @@ import android.content.Intent; import android.net.Uri; import android.provider.Downloads; import android.text.TextUtils; +import android.util.SparseLongArray; import java.util.Collection; import java.util.HashMap; @@ -41,6 +42,9 @@ class DownloadNotification { HashMap <String, NotificationItem> mNotifications; private SystemFacade mSystemFacade; + /** Time when each {@link DownloadInfo#mId} was first shown. */ + private SparseLongArray mFirstShown = new SparseLongArray(); + static final String LOGTAG = "DownloadNotification"; static final String WHERE_RUNNING = "(" + Downloads.Impl.COLUMN_STATUS + " >= '100') AND (" + @@ -62,6 +66,8 @@ class DownloadNotification { * */ static class NotificationItem { + // TODO: refactor to mNotifId and avoid building Uris based on it, since + // they can overflow int mId; // This first db _id for the download for the app long mTotalCurrent = 0; long mTotalTotal = 0; @@ -150,13 +156,22 @@ class DownloadNotification { final Notification.Builder builder = new Notification.Builder(mContext); boolean hasPausedText = (item.mPausedText != null); - int iconResource = android.R.drawable.stat_sys_download_done; + int iconResource = android.R.drawable.stat_sys_download; if (hasPausedText) { iconResource = android.R.drawable.stat_sys_warning; } builder.setSmallIcon(iconResource); builder.setOngoing(true); + // set notification "when" to be first time this DownloadInfo.mId + // was encountered, which avoids fighting with other notifs. + long firstShown = mFirstShown.get(item.mId, -1); + if (firstShown == -1) { + firstShown = System.currentTimeMillis(); + mFirstShown.put(item.mId, firstShown); + } + builder.setWhen(firstShown); + boolean hasContentText = false; StringBuilder title = new StringBuilder(item.mTitles[0]); if (item.mTitleCount > 1) { |