Fix stale data in keyguard transport control display

Make sure that caches are cleared at the right times and views have
their data populated correctly. Also fix a caching issue in
RemoteController.

Bug 11218218

Change-Id: Ieb833b5dc440ccd1b82050f12eb7059a4e0a412f
This commit is contained in:
Adam Powell
2013-10-15 19:15:39 -07:00
parent 49b6d38fe7
commit 3b435fb2f0
2 changed files with 12 additions and 8 deletions

View File

@@ -812,6 +812,7 @@ public final class RemoteController
final OnClientUpdateListener l;
synchronized(mInfoLock) {
l = mOnClientUpdateListener;
mMetadataEditor = null;
}
if (l != null) {
l.onClientChange(clearing);

View File

@@ -101,9 +101,7 @@ public class KeyguardTransportControlView extends FrameLayout {
new RemoteController.OnClientUpdateListener() {
@Override
public void onClientChange(boolean clearing) {
if (clearing) {
clearMetadata();
}
clearMetadata();
}
@Override
@@ -302,6 +300,7 @@ public class KeyguardTransportControlView extends FrameLayout {
mPopulateMetadataWhenAttached = null;
}
if (DEBUG) Log.v(TAG, "Registering TCV " + this);
mMetadata.clear();
mAudioManager.registerRemoteController(mRemoteController);
KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitor);
}
@@ -321,6 +320,7 @@ public class KeyguardTransportControlView extends FrameLayout {
if (DEBUG) Log.v(TAG, "Unregistering TCV " + this);
mAudioManager.unregisterRemoteController(mRemoteController);
KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mUpdateMonitor);
mMetadata.clear();
mUserSeeking = false;
}
@@ -394,10 +394,10 @@ public class KeyguardTransportControlView extends FrameLayout {
Log.e(TAG, "Couldn't get remote control client package icon", e);
}
setBadgeIcon(badgeIcon);
if (!TextUtils.isEmpty(mMetadata.trackTitle)) {
mTrackTitle.setText(mMetadata.trackTitle);
}
StringBuilder sb = new StringBuilder();
mTrackTitle.setText(!TextUtils.isEmpty(mMetadata.trackTitle)
? mMetadata.trackTitle : null);
final StringBuilder sb = new StringBuilder();
if (!TextUtils.isEmpty(mMetadata.artist)) {
if (sb.length() != 0) {
sb.append(" - ");
@@ -410,7 +410,10 @@ public class KeyguardTransportControlView extends FrameLayout {
}
sb.append(mMetadata.albumTitle);
}
mTrackArtistAlbum.setText(sb.toString());
final String trackArtistAlbum = sb.toString();
mTrackArtistAlbum.setText(!TextUtils.isEmpty(trackArtistAlbum) ?
trackArtistAlbum : null);
if (mMetadata.duration >= 0) {
setSeekBarsEnabled(true);