diff options
author | zachh <zachh@google.com> | 2018-01-12 20:10:12 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-12 20:40:35 -0800 |
commit | 7f909de2ff58747e4756a1b9c0128f0602c9bb61 (patch) | |
tree | fb9cff639a2c0233f119edeb3352672e39a15c97 | |
parent | fe74cd537684a97df239fde462536244529fa4dd (diff) |
Clear the cache in RealtimeRowProcessor when there's new data.
Otherwise changes to "incomplete" rows won't take effect until a new adapter is created.
Test: unit and manual
PiperOrigin-RevId: 181823087
Change-Id: I24e1b1b465c8d37cf794312b88b6cdd3ad394b5d
3 files changed, 10 insertions, 2 deletions
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java b/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java index a4a67d712..24324b073 100644 --- a/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java +++ b/java/com/android/dialer/calllog/ui/NewCallLogAdapter.java @@ -64,6 +64,7 @@ final class NewCallLogAdapter extends RecyclerView.Adapter<ViewHolder> { void updateCursor(Cursor updatedCursor) { this.cursor = updatedCursor; + this.realtimeRowProcessor.clearCache(); setHeaderPositions(); notifyDataSetChanged(); diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java index 5b526b49d..7c33c8721 100644 --- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java +++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java @@ -33,7 +33,6 @@ import com.android.dialer.calllogutils.CallLogContactTypes; import com.android.dialer.calllogutils.CallLogEntryText; import com.android.dialer.calllogutils.CallLogIntents; import com.android.dialer.calllogutils.CallTypeIconsView; -import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.contactphoto.ContactPhotoManager; @@ -208,7 +207,7 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder { @Override public void onFailure(Throwable throwable) { - LogUtil.e("RealtimeRowFutureCallback.onFailure", "realtime processing failed", throwable); + throw new RuntimeException("realtime processing failed", throwable); } } } diff --git a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java index 2cfe0b4ad..393482ab0 100644 --- a/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java +++ b/java/com/android/dialer/calllog/ui/RealtimeRowProcessor.java @@ -21,6 +21,7 @@ import android.util.ArrayMap; import com.android.dialer.DialerPhoneNumber; import com.android.dialer.NumberAttributes; import com.android.dialer.calllog.model.CoalescedRow; +import com.android.dialer.common.Assert; import com.android.dialer.common.concurrent.Annotations.Ui; import com.android.dialer.phonelookup.PhoneLookupInfo; import com.android.dialer.phonelookup.PhoneLookupInfo.Cp2Info; @@ -94,6 +95,13 @@ public final class RealtimeRowProcessor { uiExecutor /* ensures the cache is updated on a single thread */); } + /** Clears the internal cache. */ + @MainThread + public void clearCache() { + Assert.isMainThread(); + cache.clear(); + } + private CoalescedRow applyCp2LocalInfoToRow(Cp2Info cp2Info, CoalescedRow row) { PhoneLookupInfo phoneLookupInfo = PhoneLookupInfo.newBuilder().setCp2LocalInfo(cp2Info).build(); // It is safe to overwrite any existing data because CP2 always has highest priority. |