From 7e1331c66b96a543db32fcb0efd55ef734594b65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=83=5FTrump?= <861316155@qq.com> Date: Sat, 17 Nov 2018 14:17:20 +0800 Subject: [PATCH 1/4] Update IFloatWindow.java --- .../src/main/java/com/yhao/floatwindow/IFloatWindow.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindow.java b/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindow.java index 18b1d3d..b7c343d 100644 --- a/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindow.java +++ b/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindow.java @@ -29,4 +29,6 @@ public abstract class IFloatWindow { public abstract View getView(); abstract void dismiss(); + + public abstract void destory(); } From fea0a64e587e8243545705c957499c4809af1aa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=83=5FTrump?= <861316155@qq.com> Date: Sat, 17 Nov 2018 14:18:26 +0800 Subject: [PATCH 2/4] Update IFloatWindowImpl.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加销毁已注册的监听 --- .../main/java/com/yhao/floatwindow/IFloatWindowImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindowImpl.java b/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindowImpl.java index 65f222e..a35ef66 100644 --- a/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindowImpl.java +++ b/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindowImpl.java @@ -77,6 +77,12 @@ public void onBackToDesktop() { } }); } + + @Override + public void destory() { + if (mFloatLifecycle == null) return; + mFloatLifecycle.unRegisterReceiver(mB.mApplicationContext); + } @Override public void show() { From 345bd223d4b61c654bd7a2ef6b74a0835c7f7e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=83=5FTrump?= <861316155@qq.com> Date: Sat, 17 Nov 2018 14:23:07 +0800 Subject: [PATCH 3/4] Update FloatWindow.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit destroy的时候增加调用IFloatWindow中的destory,销毁已注册的监听,另增加destroyAll() --- .../java/com/yhao/floatwindow/FloatWindow.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/floatwindow/src/main/java/com/yhao/floatwindow/FloatWindow.java b/floatwindow/src/main/java/com/yhao/floatwindow/FloatWindow.java index bc57903..3239c04 100644 --- a/floatwindow/src/main/java/com/yhao/floatwindow/FloatWindow.java +++ b/floatwindow/src/main/java/com/yhao/floatwindow/FloatWindow.java @@ -51,8 +51,23 @@ public static void destroy(String tag) { return; } mFloatWindowMap.get(tag).dismiss(); + mFloatWindowMap.get(tag).destory(); mFloatWindowMap.remove(tag); } + + public static void destroyAll() { + if (mFloatWindowMap == null) return; + for (IFloatWindow iFloatWindow : mFloatWindowMap.values()) { + try { + iFloatWindow.dismiss(); + iFloatWindow.destory(); + mFloatWindowMap.remove(iFloatWindow); + } catch (Exception e) { + e.printStackTrace(); + } + } + mFloatWindowMap = null; + } public static class B { Context mApplicationContext; From 3c5976455cff1985f40c3168f81dc61f5b4e0b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=83=5FTrump?= <861316155@qq.com> Date: Sat, 17 Nov 2018 14:25:17 +0800 Subject: [PATCH 4/4] Update FloatLifecycle.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加取消注册 --- .../src/main/java/com/yhao/floatwindow/FloatLifecycle.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/floatwindow/src/main/java/com/yhao/floatwindow/FloatLifecycle.java b/floatwindow/src/main/java/com/yhao/floatwindow/FloatLifecycle.java index 6639043..81d7031 100644 --- a/floatwindow/src/main/java/com/yhao/floatwindow/FloatLifecycle.java +++ b/floatwindow/src/main/java/com/yhao/floatwindow/FloatLifecycle.java @@ -45,6 +45,11 @@ class FloatLifecycle extends BroadcastReceiver implements Application.ActivityLi applicationContext.registerReceiver(this, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); } + public void unRegisterReceiver(Context applicationContext) { + ((Application) applicationContext).unregisterActivityLifecycleCallbacks(this); + applicationContext.unregisterReceiver(this); + } + public static void setResumedListener(ResumedListener resumedListener) { sResumedListener = resumedListener; }