If the listeners would modify the listener list in the widget holder, this would cause a ConcurrentModificationException.
Fix: 275100497
Test: N/A
Change-Id: I3ae0e92db71f1c21d35dbf391dfcb92b46dd30f1
The way we are stashing the pending updates should follow the behavior pattern as that shown in AppWidgetServiceImpl
Fix: 277120633
Test: Manual
Change-Id: I92b3edb078b30873c2ef1b9fe408cbb76a34e135
This could happen when the QuickstepWidgetHolder is not initialized on the main thread, or destroy() is not called on the main thread, while a random widget is removed at the same time which iterates the widget holder list and calls the callbacks.
Also fixing an issue with memory leak that is caused by the strong reference in WeakHashMap
Test: Presubmit
Fix: 271362384
Change-Id: I621ffb29c167cef9842758c5fdefd6bb66dd487e
Maintaing a list of pending updates while the host
is not listening, so that these can be applied when
host starts listening again
Bug: 267351283
Test: Manual
Change-Id: I38423862a3461724b36f17ffe44e44c55fee06de
Fix: 235358918
Test: Manual
1. Rebooted the device and verified that widgets are still updating properly
2. Changed the theme from dark to daylight, then from daylight back to dark and verified that widgets are working
3. Kept the device on for several days and verified that widgets are still updating
4. Turn on auto-rotate for the launcher, open any app then exit, verified that widgets will not vanish and reappear
5. Add & remove widgets from the screen, added widgets are still updating
Change-Id: I98ee902f7d16b47bd77626201a4fefc897ba17a0