Procházet zdrojové kódy

Properly destroy Overlays

Guy Carmeli před 7 roky
rodič
revize
46405a2901

+ 11
- 6
lib/android/app/src/main/java/com/reactnativenavigation/presentation/OverlayManager.java Zobrazit soubor

1
 package com.reactnativenavigation.presentation;
1
 package com.reactnativenavigation.presentation;
2
 
2
 
3
-import android.view.View;
4
 import android.view.ViewGroup;
3
 import android.view.ViewGroup;
5
 
4
 
6
 import com.reactnativenavigation.viewcontrollers.ViewController;
5
 import com.reactnativenavigation.viewcontrollers.ViewController;
8
 import java.util.HashMap;
7
 import java.util.HashMap;
9
 
8
 
10
 public class OverlayManager {
9
 public class OverlayManager {
11
-    private final HashMap<String, View> overlayRegistry = new HashMap<>();
10
+    private final HashMap<String, ViewController> overlayRegistry = new HashMap<>();
12
 
11
 
13
     public void show(ViewGroup root, ViewController overlay) {
12
     public void show(ViewGroup root, ViewController overlay) {
14
-        View view = overlay.getView();
15
-        overlayRegistry.put(overlay.getId(), view);
16
-        root.addView(view);
13
+        overlayRegistry.put(overlay.getId(), overlay);
14
+        root.addView(overlay.getView());
17
     }
15
     }
18
 
16
 
19
     public void dismiss(ViewGroup root, String componentId) {
17
     public void dismiss(ViewGroup root, String componentId) {
20
-        root.removeView(overlayRegistry.get(componentId));
18
+        root.removeView(overlayRegistry.get(componentId).getView());
19
+    }
20
+
21
+    public void destroy() {
22
+        for (ViewController view : overlayRegistry.values()) {
23
+            view.destroy();
24
+        }
25
+        overlayRegistry.clear();
21
     }
26
     }
22
 }
27
 }