调试到 _GlobalApplication 实例化次数与现有实例问题...
This commit is contained in:
		| @@ -1,8 +1,8 @@ | ||||
| #Created by .winboll/winboll_app_build.gradle | ||||
| #Thu Mar 27 06:34:28 GMT 2025 | ||||
| #Thu Mar 27 10:59:31 GMT 2025 | ||||
| stageCount=1 | ||||
| libraryProject=libappbase | ||||
| baseVersion=15.1 | ||||
| publishVersion=15.1.0 | ||||
| buildCount=116 | ||||
| buildCount=130 | ||||
| baseBetaVersion=15.1.1 | ||||
|   | ||||
| @@ -8,7 +8,8 @@ | ||||
|         android:icon="@drawable/ic_launcher" | ||||
|         android:label="@string/app_name" | ||||
|         android:theme="@style/MyAPPBaseTheme" | ||||
|         android:resizeableActivity="true"> | ||||
|         android:resizeableActivity="true" | ||||
|         android:process=":App"> | ||||
|  | ||||
|         <activity | ||||
|             android:name=".MainActivity" | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| #Created by .winboll/winboll_app_build.gradle | ||||
| #Thu Mar 27 06:34:28 GMT 2025 | ||||
| #Thu Mar 27 10:59:31 GMT 2025 | ||||
| stageCount=1 | ||||
| libraryProject=libappbase | ||||
| baseVersion=15.1 | ||||
| publishVersion=15.1.0 | ||||
| buildCount=116 | ||||
| buildCount=130 | ||||
| baseBetaVersion=15.1.1 | ||||
|   | ||||
| @@ -19,13 +19,16 @@ | ||||
|         <activity | ||||
|             android:name=".GlobalCrashActivity" | ||||
|             android:label="GlobalCrashActivity" | ||||
|             android:launchMode="standard"/> | ||||
|             android:launchMode="singleInstance" | ||||
|             android:process=":GlobalCrashActivity"/> | ||||
|  | ||||
|         <activity | ||||
|             android:name="cc.winboll.studio.libappbase.winboll.LogActivity" | ||||
|             android:resizeableActivity="true" | ||||
|             android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" | ||||
|             android:exported="true"> | ||||
|             android:exported="true" | ||||
|             android:launchMode="singleInstance" | ||||
|             android:process=":LogActivity"> | ||||
|  | ||||
|         </activity> | ||||
|  | ||||
|   | ||||
| @@ -27,8 +27,7 @@ public class GlobalApplication extends Application { | ||||
|     volatile static GlobalApplication _GlobalApplication; | ||||
|     // 是否处于调试状态 | ||||
|     volatile static boolean isDebuging = false; | ||||
|     volatile static WinBollActivityManager _WinBollActivityManager; | ||||
|     volatile static MyActivityLifecycleCallbacks _MyActivityLifecycleCallbacks; | ||||
|     MyActivityLifecycleCallbacks mMyActivityLifecycleCallbacks; | ||||
|  | ||||
|     public static void setIsDebuging(boolean isDebuging) { | ||||
|         if (_GlobalApplication != null) { | ||||
| @@ -44,13 +43,9 @@ public class GlobalApplication extends Application { | ||||
| //        editor.apply(); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     public static WinBollActivityManager getWinBollActivityManager() { | ||||
|         return _WinBollActivityManager; | ||||
|     } | ||||
|      | ||||
|     public static MyActivityLifecycleCallbacks getMyActivityLifecycleCallbacks() { | ||||
|         return _MyActivityLifecycleCallbacks; | ||||
|  | ||||
|     public static GlobalApplication getInstance() { | ||||
|         return _GlobalApplication; | ||||
|     } | ||||
|  | ||||
|     static String getAPPBaseModelFilePath() { | ||||
| @@ -73,7 +68,17 @@ public class GlobalApplication extends Application { | ||||
|     @Override | ||||
|     public void onCreate() { | ||||
|         super.onCreate(); | ||||
|         _GlobalApplication = this; | ||||
|  | ||||
|         // _GlobalApplication 取值调试部分 | ||||
|         // | ||||
|         boolean is_GlobalApplicationNull = false; | ||||
|         if (_GlobalApplication == null) { | ||||
|             is_GlobalApplicationNull = true; | ||||
|             _GlobalApplication = this; | ||||
|         } else { | ||||
|             is_GlobalApplicationNull = false; | ||||
|             _GlobalApplication = this; | ||||
|         } | ||||
|  | ||||
|         // 设置应用调试标志 | ||||
|         APPBaseModel appBaseModel = APPBaseModel.loadBeanFromFile(getAPPBaseModelFilePath(), APPBaseModel.class); | ||||
| @@ -95,20 +100,24 @@ public class GlobalApplication extends Application { | ||||
|         // 初始化 Toast 框架 | ||||
|         ToastUtils.init(this); | ||||
|  | ||||
|         _WinBollActivityManager = WinBollActivityManager.getInstance(this); | ||||
|          | ||||
|         getWinBollActivityManager().setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Service); | ||||
|         // _GlobalApplication 取值调试部分 | ||||
|         // | ||||
|         LogUtils.d(TAG, String.format("is_GlobalApplicationNull is %s", is_GlobalApplicationNull)); | ||||
|  | ||||
|         WinBollActivityManager.getInstance(_GlobalApplication); | ||||
|         WinBollActivityManager.getInstance(_GlobalApplication).setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Service); | ||||
|         // 注册回调 | ||||
|         _MyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks(getWinBollActivityManager()); | ||||
|         registerActivityLifecycleCallbacks(getMyActivityLifecycleCallbacks()); | ||||
|         mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks(); | ||||
|         registerActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     @Override | ||||
|     public void onTerminate() { | ||||
|         super.onTerminate(); | ||||
|         _GlobalApplication = null; | ||||
|         // 注销回调(非必须,但建议释放资源) | ||||
|         unregisterActivityLifecycleCallbacks(getMyActivityLifecycleCallbacks()); | ||||
|         unregisterActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks); | ||||
|     } | ||||
|  | ||||
|     public static String getAppName(Context context) { | ||||
|   | ||||
| @@ -6,22 +6,26 @@ package cc.winboll.studio.libappbase.winboll; | ||||
|  */ | ||||
| import android.app.Activity; | ||||
| import android.app.Application; | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
| import android.os.Bundle; | ||||
| import cc.winboll.studio.libappbase.GlobalApplication; | ||||
| import cc.winboll.studio.libappbase.LogUtils; | ||||
| import cc.winboll.studio.libappbase.utils.ToastUtils;  | ||||
| import cc.winboll.studio.libappbase.utils.ToastUtils; | ||||
| import cc.winboll.studio.libappbase.winboll.IWinBollActivity;  | ||||
|  | ||||
| public class MyActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {  | ||||
|  | ||||
|     public static final String TAG = "MyActivityLifecycleCallbacks"; | ||||
|      | ||||
|     WinBollActivityManager mWinBollActivityManager; | ||||
|  | ||||
|      | ||||
|     public String mInfo = ""; | ||||
|  | ||||
|     public MyActivityLifecycleCallbacks(WinBollActivityManager winBollActivityManager) { | ||||
|         mWinBollActivityManager = winBollActivityManager; | ||||
|     public MyActivityLifecycleCallbacks() { | ||||
|          | ||||
|     } | ||||
|      | ||||
|     WinBollActivityManager getWinBollActivityManager() { | ||||
|         return WinBollActivityManager.getInstance(GlobalApplication.getInstance()); | ||||
|     } | ||||
|  | ||||
|     void createActivityeInfo(Activity activity) { | ||||
| @@ -60,7 +64,7 @@ public class MyActivityLifecycleCallbacks implements Application.ActivityLifecyc | ||||
|         //System.out.println(activity.getLocalClassName() + " was created");  | ||||
|         LogUtils.d(TAG, activity.getLocalClassName() + " was created"); | ||||
|         createActivityeInfo(activity); | ||||
|         mWinBollActivityManager.add((IWinBollActivity)activity); | ||||
|         getWinBollActivityManager().add((IWinBollActivity)activity); | ||||
|     }  | ||||
|  | ||||
|     @Override  | ||||
| @@ -98,6 +102,6 @@ public class MyActivityLifecycleCallbacks implements Application.ActivityLifecyc | ||||
|     public void onActivityDestroyed(Activity activity) {  | ||||
|         //System.out.println(activity.getLocalClassName() + " was destroyed"); | ||||
|         LogUtils.d(TAG, activity.getLocalClassName() + " was destroyed"); | ||||
|         mWinBollActivityManager.registeRemove((IWinBollActivity)activity); | ||||
|         getWinBollActivityManager().registeRemove((IWinBollActivity)activity); | ||||
|     }  | ||||
| } | ||||
|   | ||||
| @@ -33,9 +33,9 @@ public class WinBollActivityManager { | ||||
|  | ||||
|     Context mContext; | ||||
|     MyActivityLifecycleCallbacks mMyActivityLifecycleCallbacks; | ||||
|     static WinBollActivityManager _mWinBollActivityManager; | ||||
|     static Map<String, IWinBollActivity> _mapIWinBollList; | ||||
|     IWinBollActivity firstIWinBollActivity; | ||||
|     static volatile WinBollActivityManager _mWinBollActivityManager; | ||||
|     static volatile Map<String, IWinBollActivity> _mapIWinBollList; | ||||
|     static volatile IWinBollActivity firstIWinBollActivity; | ||||
|  | ||||
|     public WinBollActivityManager(Context context) { | ||||
|         mContext = context; | ||||
| @@ -208,6 +208,7 @@ public class WinBollActivityManager { | ||||
|     public <T extends IWinBollActivity> void resumeActivity(Context context, String tag) { | ||||
|         LogUtils.d(TAG, "resumeActivity(Context context, String tag)"); | ||||
|         T iWinBoll = (T)getIWinBoll(tag); | ||||
|         LogUtils.d(TAG, String.format("iWinBoll.getTag() %s", iWinBoll.getTag())); | ||||
|         //LogUtils.d(TAG, "activity " + activity.getTag()); | ||||
|         if (iWinBoll != null && !iWinBoll.getActivity().isFinishing() && !iWinBoll.getActivity().isDestroyed()) { | ||||
|             resumeActivity(context, iWinBoll); | ||||
| @@ -219,15 +220,17 @@ public class WinBollActivityManager { | ||||
|     // | ||||
|     public <T extends IWinBollActivity> void resumeActivity(Context context, T iWinBoll) { | ||||
|         LogUtils.d(TAG, "resumeActivity(Context context, T iWinBoll)"); | ||||
|         ActivityManager am = (ActivityManager) iWinBoll.getActivity().getSystemService(Context.ACTIVITY_SERVICE); | ||||
|         ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); | ||||
|         //返回启动它的根任务(home 或者 MainActivity) | ||||
|         Intent intent = new Intent(context, iWinBoll.getClass()); | ||||
|         TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); | ||||
|         Intent intent = new Intent(mContext, iWinBoll.getClass()); | ||||
|         TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext); | ||||
|         stackBuilder.addNextIntentWithParentStack(intent); | ||||
|         stackBuilder.startActivities(); | ||||
|         //moveTaskToFront(YourTaskId, 0); | ||||
|         //ToastUtils.show("resumeActivity am.moveTaskToFront"); | ||||
|         LogUtils.d(TAG, String.format("iWinBoll.getActivity().getTaskId() %d", iWinBoll.getActivity().getTaskId())); | ||||
|         am.moveTaskToFront(iWinBoll.getActivity().getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION); | ||||
|         LogUtils.d(TAG, "am.moveTaskToFront"); | ||||
|     } | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ZhanGSKen
					ZhanGSKen