Skip to content

Commit 2d5f468

Browse files
AriesHooAriesHoo
authored andcommitted
1、新增:FastStackUtil Activity堆栈管理类出栈方法-避免因Activity短暂进入destroy后无法恢复状态问题
2、优化:全局生命周期回调FastLifecycleCallback 增加状态栏控制时TopView背景为空判断
1 parent db96fd8 commit 2d5f468

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

library/src/main/java/com/aries/library/fast/FastLifecycleCallbacks.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
* Function: Activity/Fragment生命周期
3636
* Description:
3737
* 1、2018-7-2 09:29:54 新增继承{@link FastMainActivity}的Activity虚拟导航栏功能
38+
* 2、2018-11-29 11:49:46 {@link #setStatusBar(Activity)}增加topView background 空判断
39+
* 3、2018-11-29 11:50:58 {@link #onActivityDestroyed(Activity)} 出栈方法调用{@link FastStackUtil#pop(Activity, boolean)} 第二个参数设置为false避免因Activity状态切换进入生命周期造成状态无法保存问题
3840
*/
3941
public class FastLifecycleCallbacks extends FragmentManager.FragmentLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
4042

@@ -133,7 +135,7 @@ public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
133135
public void onActivityDestroyed(Activity activity) {
134136
getControl();
135137
LoggerManager.i(TAG, "onActivityDestroyed:" + activity.getClass().getSimpleName() + ";isFinishing:" + activity.isFinishing());
136-
FastStackUtil.getInstance().pop(activity);
138+
FastStackUtil.getInstance().pop(activity, false);
137139
//统一注销Fragment生命周期处理
138140
if (activity instanceof FragmentActivity) {
139141
FragmentManager fragmentManager = ((FragmentActivity) activity).getSupportFragmentManager();
@@ -195,7 +197,7 @@ private void setSwipeBack(final Activity activity) {
195197
final BGASwipeBackHelper swipeBackHelper = new BGASwipeBackHelper(activity, new BGASwipeBackHelper.Delegate() {
196198
@Override
197199
public boolean isSupportSwipeBack() {
198-
return mSwipeBackControl!=null?mSwipeBackControl.isSwipeBackEnable(activity):true;
200+
return mSwipeBackControl != null ? mSwipeBackControl.isSwipeBackEnable(activity) : true;
199201
}
200202

201203
@Override
@@ -252,7 +254,7 @@ private void setStatusBar(Activity activity) {
252254
.setPlusStatusViewEnable(false)
253255
.setTransEnable(true)
254256
.setTopView(topView);
255-
if (topView != null) {
257+
if (topView != null && topView.getBackground() != null) {
256258
Drawable drawable = topView.getBackground().mutate();
257259
statusViewHelper.setStatusLayoutDrawable(drawable);
258260
}

library/src/main/java/com/aries/library/fast/util/FastStackUtil.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.aries.library.fast.util;
22

33
import android.app.Activity;
4+
import android.os.Bundle;
45

56
import com.aries.library.fast.manager.LoggerManager;
67

@@ -13,6 +14,8 @@
1314
* Description:
1415
* 1、2018-6-21 09:49:11 新增根据class获取Activity方法
1516
* 2、2018-7-30 10:00:45 修改方法返回值
17+
* 3、2018-11-29 11:44:16 新增{@link #pop(Activity, boolean)} 增加是否调用finish()方法参数,避免因Activity状态变换(如横竖屏切换)造成onActivityDestroyed时候切换回来状态无法保存
18+
* 即:{@link Activity#onCreate(Bundle)} onCreate(Bundle savedInstanceState) savedInstanceState对象为空-因为pop的时候已将其finish
1619
*/
1720
public class FastStackUtil {
1821
private final String TAG = this.getClass().getSimpleName();
@@ -108,16 +111,21 @@ public FastStackUtil push(Activity activity) {
108111
return sInstance;
109112
}
110113

114+
public FastStackUtil pop(Activity activity) {
115+
return pop(activity, true);
116+
}
117+
111118
/**
112119
* 出栈
113120
*
114121
* @param activity Activity对象
122+
* @param isFinish 是否关闭Activity 调用{@link Activity#finish()}--在生命周期onActivityDestroyed的时候建议传false不然Activity状态无法保存
123+
* @return
115124
*/
116-
public FastStackUtil pop(Activity activity) {
125+
public FastStackUtil pop(Activity activity, boolean isFinish) {
117126
if (activity != null) {
118127
LoggerManager.i(TAG, "remove current activity:" + activity.getClass().getSimpleName() + ";isFinishing" + activity.isFinishing());
119-
//只需在activity不在正在关闭状态下进行finish即可
120-
if (!activity.isFinishing()) {
128+
if (isFinish) {
121129
activity.finish();
122130
}
123131
if (mActivityStack != null && mActivityStack.contains(activity)) {

0 commit comments

Comments
 (0)