修复多窗口重复创建问题

This commit is contained in:
ZhanGSKen 2025-06-01 14:02:56 +08:00
parent 56692db142
commit d5a3c626b3
3 changed files with 25 additions and 22 deletions

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Sat May 31 13:31:02 GMT 2025 #Sun Jun 01 06:01:20 GMT 2025
stageCount=2 stageCount=2
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.8 baseVersion=15.8
publishVersion=15.8.1 publishVersion=15.8.1
buildCount=25 buildCount=31
baseBetaVersion=15.8.2 baseBetaVersion=15.8.2

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Sat May 31 13:31:02 GMT 2025 #Sun Jun 01 06:01:20 GMT 2025
stageCount=2 stageCount=2
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.8 baseVersion=15.8
publishVersion=15.8.1 publishVersion=15.8.1
buildCount=25 buildCount=31
baseBetaVersion=15.8.2 baseBetaVersion=15.8.2

View File

@ -57,7 +57,7 @@ public class WinBoLLActivityManager {
* 把Activity添加到管理中 * 把Activity添加到管理中
*/ */
public <T extends IWinBoLLActivity> void add(T activity) { public <T extends IWinBoLLActivity> void add(T activity) {
if (isActive(activity.getTag())) { if (isActivityActive(activity.getTag())) {
LogUtils.d(TAG, String.format("add(...) %s is active.", activity.getTag())); LogUtils.d(TAG, String.format("add(...) %s is active.", activity.getTag()));
} else { } else {
mActivityListMap.put(activity.getTag(), activity); mActivityListMap.put(activity.getTag(), activity);
@ -125,30 +125,22 @@ public class WinBoLLActivityManager {
// //
// 判断 tag 绑定的 Activity 是否已经创建 // 判断 tag 绑定的 Activity 是否已经创建
// //
public boolean isActive(String tag) { public boolean isActivityActive(String tag) {
Activity activity = getActivityByTag(tag); return mActivityListMap.get(tag) != null;
if (activity != null) {
//判断是否正在关闭
if (activity.isFinishing() || activity.isDestroyed()) {
return false;
} else {
return true;
}
}
return false;
} }
Activity getActivityByTag(String tag) { Activity getActivityByTag(String tag) {
return (mActivityListMap.get(tag) == null) ?null: mActivityListMap.get(tag).getActivity(); return (mActivityListMap.get(tag) == null) ?null: mActivityListMap.get(tag).getActivity();
} }
// //
// 找到tag 绑定的 BaseActivity 通过 getTaskId() 移动到前台 // 找到tag 绑定的 BaseActivity 通过 getTaskId() 移动到前台
// //
public <T extends IWinBoLLActivity> boolean resumeActivity(Class<T> clazz) { public <T extends IWinBoLLActivity> boolean resumeActivity(Class<T> clazz) {
try { try {
Activity activity = getActivityByTag(clazz.newInstance().getTag()); Activity activity = getActivityByTag(clazz.newInstance().getTag());
if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) { if (activity != null) {
return resumeActivity(activity); return resumeActivity(activity);
} }
} catch (InstantiationException | IllegalAccessException e) { } catch (InstantiationException | IllegalAccessException e) {
@ -157,18 +149,29 @@ public class WinBoLLActivityManager {
return false; return false;
} }
//
// 找到tag 绑定的 BaseActivity 通过 getTaskId() 移动到前台
//
public <T extends IWinBoLLActivity> boolean resumeActivity(String tag) {
Activity activity = getActivityByTag(tag);
if (activity != null) {
return resumeActivity(activity);
}
return false;
}
// //
// 找到tag 绑定的 BaseActivity 通过 getTaskId() 移动到前台 // 找到tag 绑定的 BaseActivity 通过 getTaskId() 移动到前台
// //
public <T extends IWinBoLLActivity> boolean resumeActivity(Activity activity) { public <T extends IWinBoLLActivity> boolean resumeActivity(Activity activity) {
ActivityManager am = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE); ActivityManager am = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
//返回启动它的根任务home 或者 MainActivity //返回启动它的根任务home 或者 MainActivity
Intent intent = new Intent(mContext, activity.getClass()); //Intent intent = new Intent(mContext, activity.getClass());
TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext); //TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext);
stackBuilder.addNextIntentWithParentStack(intent); //stackBuilder.addNextIntentWithParentStack(intent);
stackBuilder.startActivities(); //stackBuilder.startActivities();
am.moveTaskToFront(activity.getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION); am.moveTaskToFront(activity.getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
ToastUtils.show("resumeActivity"); //ToastUtils.show("resumeActivity");
return true; return true;
} }