Fix an issue with concurrent modification on widget holders list

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
1 file changed