Merge "Stop inflate on overflow and null check views" into rvc-dev am: 39ea2f1d51
Change-Id: I4ac8c497a9084024f69ef332f35f43bfa9316f6a
This commit is contained in:
@@ -216,11 +216,20 @@ class Bubble implements BubbleViewProvider {
|
|||||||
return mInflated;
|
return mInflated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void stopInflation() {
|
||||||
|
if (mInflationTask == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mInflationTask.cancel(/* mayInterruptIfRunning */ true);
|
||||||
|
mIconView = null;
|
||||||
|
mExpandedView = null;
|
||||||
|
mInflated = false;
|
||||||
|
}
|
||||||
|
|
||||||
void setViewInfo(BubbleViewInfoTask.BubbleViewInfo info) {
|
void setViewInfo(BubbleViewInfoTask.BubbleViewInfo info) {
|
||||||
if (!isInflated()) {
|
if (!isInflated()) {
|
||||||
mIconView = info.imageView;
|
mIconView = info.imageView;
|
||||||
mExpandedView = info.expandedView;
|
mExpandedView = info.expandedView;
|
||||||
mInflated = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mShortcutInfo = info.shortcutInfo;
|
mShortcutInfo = info.shortcutInfo;
|
||||||
@@ -231,8 +240,15 @@ class Bubble implements BubbleViewProvider {
|
|||||||
mDotColor = info.dotColor;
|
mDotColor = info.dotColor;
|
||||||
mDotPath = info.dotPath;
|
mDotPath = info.dotPath;
|
||||||
|
|
||||||
mExpandedView.update(this);
|
if (mExpandedView != null && mIconView != null) {
|
||||||
mIconView.update(this);
|
mInflated = true;
|
||||||
|
}
|
||||||
|
if (mExpandedView != null) {
|
||||||
|
mExpandedView.update(/* bubble */ this);
|
||||||
|
}
|
||||||
|
if (mIconView != null) {
|
||||||
|
mIconView.update(/* bubble */ this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setInflated(boolean inflated) {
|
void setInflated(boolean inflated) {
|
||||||
|
|||||||
@@ -203,10 +203,7 @@ public class BubbleData {
|
|||||||
if (DEBUG_BUBBLE_DATA) {
|
if (DEBUG_BUBBLE_DATA) {
|
||||||
Log.d(TAG, "promoteBubbleFromOverflow: " + bubble);
|
Log.d(TAG, "promoteBubbleFromOverflow: " + bubble);
|
||||||
}
|
}
|
||||||
|
moveOverflowBubbleToPending(bubble);
|
||||||
// Preserve new order for next repack, which sorts by last updated time.
|
|
||||||
bubble.markUpdatedAt(mTimeSource.currentTimeMillis());
|
|
||||||
mOverflowBubbles.remove(bubble);
|
|
||||||
bubble.inflate(
|
bubble.inflate(
|
||||||
b -> {
|
b -> {
|
||||||
notificationEntryUpdated(bubble, /* suppressFlyout */
|
notificationEntryUpdated(bubble, /* suppressFlyout */
|
||||||
@@ -217,6 +214,13 @@ public class BubbleData {
|
|||||||
dispatchPendingChanges();
|
dispatchPendingChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void moveOverflowBubbleToPending(Bubble b) {
|
||||||
|
// Preserve new order for next repack, which sorts by last updated time.
|
||||||
|
b.markUpdatedAt(mTimeSource.currentTimeMillis());
|
||||||
|
mOverflowBubbles.remove(b);
|
||||||
|
mPendingBubbles.add(b);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new bubble or returns an existing one. Does not add new bubbles to
|
* Constructs a new bubble or returns an existing one. Does not add new bubbles to
|
||||||
* bubble data, must go through {@link #notificationEntryUpdated(Bubble, boolean, boolean)}
|
* bubble data, must go through {@link #notificationEntryUpdated(Bubble, boolean, boolean)}
|
||||||
@@ -228,8 +232,7 @@ public class BubbleData {
|
|||||||
for (int i = 0; i < mOverflowBubbles.size(); i++) {
|
for (int i = 0; i < mOverflowBubbles.size(); i++) {
|
||||||
Bubble b = mOverflowBubbles.get(i);
|
Bubble b = mOverflowBubbles.get(i);
|
||||||
if (b.getKey().equals(entry.getKey())) {
|
if (b.getKey().equals(entry.getKey())) {
|
||||||
mOverflowBubbles.remove(b);
|
moveOverflowBubbleToPending(b);
|
||||||
mPendingBubbles.add(b);
|
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -445,6 +448,7 @@ public class BubbleData {
|
|||||||
Log.d(TAG, "overflowing bubble: " + bubble);
|
Log.d(TAG, "overflowing bubble: " + bubble);
|
||||||
}
|
}
|
||||||
mOverflowBubbles.add(0, bubble);
|
mOverflowBubbles.add(0, bubble);
|
||||||
|
bubble.stopInflation();
|
||||||
|
|
||||||
if (mOverflowBubbles.size() == mMaxOverflowBubbles + 1) {
|
if (mOverflowBubbles.size() == mMaxOverflowBubbles + 1) {
|
||||||
// Remove oldest bubble.
|
// Remove oldest bubble.
|
||||||
|
|||||||
Reference in New Issue
Block a user