@@ -7,6 +7,7 @@ import com.petterp.floatingx.config.FxHelper
77import com.petterp.floatingx.ext.FxDebug
88import com.petterp.floatingx.ext.fxParentView
99import com.petterp.floatingx.listener.IFxControl
10+ import java.lang.ref.WeakReference
1011
1112/* *
1213 * @Author petterp
@@ -19,7 +20,7 @@ class FxLifecycleCallbackImpl(
1920) :
2021 Application .ActivityLifecycleCallbacks {
2122 internal var control: IFxControl ? = null
22- internal var topActivity: Activity ? = null
23+ internal var topActivity: WeakReference < Activity > ? = null
2324
2425 private val Activity .isParent: Boolean
2526 get() = control?.getView()?.parent == = fxParentView
@@ -36,17 +37,18 @@ class FxLifecycleCallbackImpl(
3637 }
3738
3839 override fun onActivityStarted (activity : Activity ) {
39- topActivity = activity
40+ initActivity( activity)
4041 FxDebug .d(" AppLifecycle--[${activity.name} ]-onActivityStarted" )
4142 helper.fxLifecycleExpand?.onActivityStarted?.let {
4243 if (activity.isActivityInValid) it.invoke(activity)
4344 }
4445 }
4546
4647 override fun onActivityResumed (activity : Activity ) {
48+ initActivity(activity)
49+ FxDebug .d(" AppLifecycle--[${activity.name} ]-onActivityResumed" )
4750 val isActivityInValid = activity.isActivityInValid
4851 val isParent = activity.isParent
49- FxDebug .d(" AppLifecycle--[${activity.name} ]-onActivityResumed" )
5052 FxDebug .d(" view->isAttach? isContainActivity-$isActivityInValid --enableFx-${helper.enableFx} ---isParent-$isParent " )
5153 if (helper.enableFx && isActivityInValid && ! isParent)
5254 control?.attach(activity)
@@ -69,105 +71,18 @@ class FxLifecycleCallbackImpl(
6971 }
7072 }
7173
72- override fun onActivityPostDestroyed (activity : Activity ) {
73- if (topActivity == = activity) topActivity = null
74- val isParent = activity.isParent
75- FxDebug .d(" AppLifecycle--[${activity.name} ]-onActivityPostDestroyed" )
76- FxDebug .d(" view->isDetach? isContainActivity-${activity.isActivityInValid} --enableFx-${helper.enableFx} ---isParent-$isParent " )
77- if (helper.enableFx && isParent)
78- control?.detach(activity)
79- helper.fxLifecycleExpand?.onActivityPostDestroyed?.let {
80- if (activity.isActivityInValid) it.invoke(activity)
81- }
82- }
83-
8474 override fun onActivityDestroyed (activity : Activity ) {
85- FxDebug .d(" AppLifecycle--[${activity.name} ]-onActivityDestroyed" )
8675 helper.fxLifecycleExpand?.onActivityDestroyed?.let {
8776 if (activity.isActivityInValid) it.invoke(activity)
8877 }
89- }
90-
91- override fun onActivityPostPaused (activity : Activity ) {
92- helper.fxLifecycleExpand?.onActivityPostPaused?.let {
93- if (activity.isActivityInValid) it.invoke(activity)
94- }
95- }
96-
97- override fun onActivityPostStopped (activity : Activity ) {
98- helper.fxLifecycleExpand?.onActivityPostStopped?.let {
99- if (activity.isActivityInValid) it.invoke(activity)
100- }
101- }
102-
103- override fun onActivityPreDestroyed (activity : Activity ) {
104- helper.fxLifecycleExpand?.onActivityPreDestroyed?.let {
105- if (activity.isActivityInValid) it.invoke(activity)
106- }
107- }
108-
109- override fun onActivityPreCreated (activity : Activity , savedInstanceState : Bundle ? ) {
110- helper.fxLifecycleExpand?.onActivityPreCreated?.let {
111- if (activity.isActivityInValid) it.invoke(activity, savedInstanceState)
112- }
113- }
114-
115- override fun onActivityPrePaused (activity : Activity ) {
116- super .onActivityPrePaused(activity)
117- helper.fxLifecycleExpand?.onActivityPrePaused?.let {
118- if (activity.isActivityInValid) it.invoke(activity)
119- }
120- }
121-
122- override fun onActivityPreResumed (activity : Activity ) {
123- super .onActivityPreResumed(activity)
124- helper.fxLifecycleExpand?.onActivityPreResumed?.let {
125- if (activity.isActivityInValid) it.invoke(activity)
126- }
127- }
128-
129- override fun onActivityPostSaveInstanceState (activity : Activity , outState : Bundle ) {
130- helper.fxLifecycleExpand?.onActivityPostSaveInstanceState?.let {
131- if (activity.isActivityInValid) it.invoke(activity, outState)
132- }
133- }
134-
135- override fun onActivityPreSaveInstanceState (activity : Activity , outState : Bundle ) {
136- super .onActivityPreSaveInstanceState(activity, outState)
137- helper.fxLifecycleExpand?.onActivityPreSaveInstanceState?.let {
138- if (activity.isActivityInValid) it.invoke(activity, outState)
139- }
140- }
141-
142- override fun onActivityPreStopped (activity : Activity ) {
143- super .onActivityPreStopped(activity)
144- helper.fxLifecycleExpand?.onActivityPreStopped?.let {
145- if (activity.isActivityInValid) it.invoke(activity)
146- }
147- }
148-
149- override fun onActivityPostResumed (activity : Activity ) {
150- topActivity = activity
151- helper.fxLifecycleExpand?.onActivityPostResumed?.let {
152- if (activity.isActivityInValid) it.invoke(activity)
153- }
154- }
155-
156- override fun onActivityPostStarted (activity : Activity ) {
157- helper.fxLifecycleExpand?.onActivityPostStarted?.let {
158- if (activity.isActivityInValid) it.invoke(activity)
159- }
160- }
161-
162- override fun onActivityPreStarted (activity : Activity ) {
163- helper.fxLifecycleExpand?.onActivityPreStarted?.let {
164- if (activity.isActivityInValid) it.invoke(activity)
165- }
166- }
167-
168- override fun onActivityPostCreated (activity : Activity , savedInstanceState : Bundle ? ) {
169- helper.fxLifecycleExpand?.onActivityPostCreated?.let {
170- if (activity.isActivityInValid) it.invoke(activity)
78+ val isParent = activity.isParent
79+ FxDebug .d(" AppLifecycle--[${activity.name} ]-onActivityDestroyed" )
80+ FxDebug .d(" view->isDetach? isContainActivity-${activity.isActivityInValid} --enableFx-${helper.enableFx} ---isParent-$isParent " )
81+ if (helper.enableFx && isParent)
82+ control?.detach(activity)
83+ if (topActivity?.get() == = activity) {
84+ topActivity?.clear()
85+ topActivity = null
17186 }
17287 }
17388
@@ -176,4 +91,9 @@ class FxLifecycleCallbackImpl(
17691 if (activity.isActivityInValid) it.invoke(activity, outState)
17792 }
17893 }
94+
95+ private fun initActivity (activity : Activity ) {
96+ if (topActivity?.get() != activity)
97+ topActivity = WeakReference (activity)
98+ }
17999}
0 commit comments