修复多窗口重复创建问题

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
#Sat May 31 13:31:02 GMT 2025
#Sun Jun 01 06:01:20 GMT 2025
stageCount=2
libraryProject=libappbase
baseVersion=15.8
publishVersion=15.8.1
buildCount=25
buildCount=31
baseBetaVersion=15.8.2

View File

@ -1,8 +1,8 @@
#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
libraryProject=libappbase
baseVersion=15.8
publishVersion=15.8.1
buildCount=25
buildCount=31
baseBetaVersion=15.8.2

View File

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