取消窗口管理模块,修复应用崩溃调试模块。
This commit is contained in:
		@@ -1,8 +1,8 @@
 | 
				
			|||||||
#Created by .winboll/winboll_app_build.gradle
 | 
					#Created by .winboll/winboll_app_build.gradle
 | 
				
			||||||
#Thu Mar 27 10:59:31 GMT 2025
 | 
					#Fri Mar 28 05:17:15 GMT 2025
 | 
				
			||||||
stageCount=1
 | 
					stageCount=1
 | 
				
			||||||
libraryProject=libappbase
 | 
					libraryProject=libappbase
 | 
				
			||||||
baseVersion=15.1
 | 
					baseVersion=15.1
 | 
				
			||||||
publishVersion=15.1.0
 | 
					publishVersion=15.1.0
 | 
				
			||||||
buildCount=130
 | 
					buildCount=143
 | 
				
			||||||
baseBetaVersion=15.1.1
 | 
					baseBetaVersion=15.1.1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,11 @@
 | 
				
			|||||||
package cc.winboll.studio.appbase;
 | 
					package cc.winboll.studio.appbase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import android.app.Activity;
 | 
					import android.app.Activity;
 | 
				
			||||||
import android.app.ActivityOptions;
 | 
					 | 
				
			||||||
import android.content.ComponentName;
 | 
					import android.content.ComponentName;
 | 
				
			||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import android.graphics.Rect;
 | 
					 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
import android.support.v7.app.AppCompatActivity;
 | 
					import android.support.v7.app.AppCompatActivity;
 | 
				
			||||||
 | 
					import android.support.v7.widget.Toolbar;
 | 
				
			||||||
import android.view.Menu;
 | 
					import android.view.Menu;
 | 
				
			||||||
import android.view.MenuItem;
 | 
					import android.view.MenuItem;
 | 
				
			||||||
import android.view.View;
 | 
					import android.view.View;
 | 
				
			||||||
@@ -16,15 +15,14 @@ import cc.winboll.studio.appbase.activities.NewActivity;
 | 
				
			|||||||
import cc.winboll.studio.appbase.services.MainService;
 | 
					import cc.winboll.studio.appbase.services.MainService;
 | 
				
			||||||
import cc.winboll.studio.appbase.services.TestDemoBindService;
 | 
					import cc.winboll.studio.appbase.services.TestDemoBindService;
 | 
				
			||||||
import cc.winboll.studio.appbase.services.TestDemoService;
 | 
					import cc.winboll.studio.appbase.services.TestDemoService;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.CrashHandler;
 | 
				
			||||||
import cc.winboll.studio.libappbase.GlobalApplication;
 | 
					import cc.winboll.studio.libappbase.GlobalApplication;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.GlobalCrashActivity;
 | 
				
			||||||
import cc.winboll.studio.libappbase.LogUtils;
 | 
					import cc.winboll.studio.libappbase.LogUtils;
 | 
				
			||||||
import cc.winboll.studio.libappbase.sos.SOS;
 | 
					import cc.winboll.studio.libappbase.sos.SOS;
 | 
				
			||||||
import cc.winboll.studio.libappbase.utils.ToastUtils;
 | 
					import cc.winboll.studio.libappbase.utils.ToastUtils;
 | 
				
			||||||
import cc.winboll.studio.libappbase.widgets.StatusWidget;
 | 
					import cc.winboll.studio.libappbase.widgets.StatusWidget;
 | 
				
			||||||
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
 | 
					import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
 | 
				
			||||||
import cc.winboll.studio.libappbase.winboll.LogActivity;
 | 
					 | 
				
			||||||
import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
 | 
					 | 
				
			||||||
import android.support.v7.widget.Toolbar;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MainActivity extends AppCompatActivity implements IWinBollActivity {
 | 
					public class MainActivity extends AppCompatActivity implements IWinBollActivity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -72,7 +70,7 @@ public class MainActivity extends AppCompatActivity implements IWinBollActivity
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean onOptionsItemSelected(MenuItem item) {
 | 
					    public boolean onOptionsItemSelected(MenuItem item) {
 | 
				
			||||||
        if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
 | 
					        if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
 | 
				
			||||||
            WinBollActivityManager.getInstance(this).startLogActivity(this);
 | 
					            GlobalApplication.getWinBollActivityManager().startLogActivity(this);
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        } else if(item.getItemId() == cc.winboll.studio.appbase.R.id.item_minimal) {
 | 
					        } else if(item.getItemId() == cc.winboll.studio.appbase.R.id.item_minimal) {
 | 
				
			||||||
            moveTaskToBack(true);
 | 
					            moveTaskToBack(true);
 | 
				
			||||||
@@ -96,6 +94,12 @@ public class MainActivity extends AppCompatActivity implements IWinBollActivity
 | 
				
			|||||||
        GlobalApplication.setIsDebuging(isDebuging);
 | 
					        GlobalApplication.setIsDebuging(isDebuging);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
 | 
					    public void onPreviewGlobalCrashActivity(View view) {
 | 
				
			||||||
 | 
					        Intent intent = new Intent(this, GlobalCrashActivity.class);
 | 
				
			||||||
 | 
					        intent.putExtra(CrashHandler.EXTRA_CRASH_INFO, "Demo log...");
 | 
				
			||||||
 | 
					        startActivity(intent);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void onStartCenter(View view) {
 | 
					    public void onStartCenter(View view) {
 | 
				
			||||||
        MainService.startMainService(this);
 | 
					        MainService.startMainService(this);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -176,7 +180,7 @@ public class MainActivity extends AppCompatActivity implements IWinBollActivity
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void onTestOpenNewActivity(View view) {
 | 
					    public void onTestOpenNewActivity(View view) {
 | 
				
			||||||
        WinBollActivityManager.getInstance(this).startWinBollActivity(this, NewActivity.class);
 | 
					        GlobalApplication.getWinBollActivityManager().startWinBollActivity(this, NewActivity.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,7 @@ import android.view.Menu;
 | 
				
			|||||||
import android.view.MenuItem;
 | 
					import android.view.MenuItem;
 | 
				
			||||||
import android.view.View;
 | 
					import android.view.View;
 | 
				
			||||||
import cc.winboll.studio.appbase.R;
 | 
					import cc.winboll.studio.appbase.R;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.GlobalApplication;
 | 
				
			||||||
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
 | 
					import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
 | 
				
			||||||
import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
 | 
					import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,15 +53,15 @@ public class New2Activity extends AppCompatActivity implements IWinBollActivity
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void onCloseThisActivity(View view) {
 | 
					    public void onCloseThisActivity(View view) {
 | 
				
			||||||
        WinBollActivityManager.getInstance(this).finish(this);
 | 
					        GlobalApplication.getWinBollActivityManager().finish(this);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void onCloseAllActivity(View view) {
 | 
					    public void onCloseAllActivity(View view) {
 | 
				
			||||||
        WinBollActivityManager.getInstance(this).finishAll();
 | 
					        GlobalApplication.getWinBollActivityManager().finishAll();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void onNewActivity(View view) {
 | 
					    public void onNewActivity(View view) {
 | 
				
			||||||
        WinBollActivityManager.getInstance(this).startWinBollActivity(this, NewActivity.class);
 | 
					        GlobalApplication.getWinBollActivityManager().startWinBollActivity(this, NewActivity.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -74,7 +75,7 @@ public class New2Activity extends AppCompatActivity implements IWinBollActivity
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean onOptionsItemSelected(MenuItem item) {
 | 
					    public boolean onOptionsItemSelected(MenuItem item) {
 | 
				
			||||||
        if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
 | 
					        if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
 | 
				
			||||||
            WinBollActivityManager.getInstance(this).startLogActivity(this);
 | 
					            GlobalApplication.getWinBollActivityManager().startLogActivity(this);
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        } else if(item.getItemId() == cc.winboll.studio.appbase.R.id.item_minimal) {
 | 
					        } else if(item.getItemId() == cc.winboll.studio.appbase.R.id.item_minimal) {
 | 
				
			||||||
            moveTaskToBack(true);
 | 
					            moveTaskToBack(true);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ import android.view.Menu;
 | 
				
			|||||||
import android.view.MenuItem;
 | 
					import android.view.MenuItem;
 | 
				
			||||||
import android.view.View;
 | 
					import android.view.View;
 | 
				
			||||||
import cc.winboll.studio.appbase.R;
 | 
					import cc.winboll.studio.appbase.R;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.GlobalApplication;
 | 
				
			||||||
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
 | 
					import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
 | 
				
			||||||
import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
 | 
					import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,15 +51,15 @@ public class NewActivity extends AppCompatActivity implements IWinBollActivity {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void onCloseThisActivity(View view) {
 | 
					    public void onCloseThisActivity(View view) {
 | 
				
			||||||
        WinBollActivityManager.getInstance(this).finish(this);
 | 
					        GlobalApplication.getWinBollActivityManager().finish(this);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void onCloseAllActivity(View view) {
 | 
					    public void onCloseAllActivity(View view) {
 | 
				
			||||||
        WinBollActivityManager.getInstance(this).finishAll();
 | 
					        GlobalApplication.getWinBollActivityManager().finishAll();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void onNew2Activity(View view) {
 | 
					    public void onNew2Activity(View view) {
 | 
				
			||||||
        WinBollActivityManager.getInstance(this).startWinBollActivity(this, New2Activity.class);
 | 
					        GlobalApplication.getWinBollActivityManager().startWinBollActivity(this, New2Activity.class);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -72,7 +73,7 @@ public class NewActivity extends AppCompatActivity implements IWinBollActivity {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean onOptionsItemSelected(MenuItem item) {
 | 
					    public boolean onOptionsItemSelected(MenuItem item) {
 | 
				
			||||||
        if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
 | 
					        if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
 | 
				
			||||||
            WinBollActivityManager.getInstance(this).startLogActivity(this);
 | 
					            GlobalApplication.getWinBollActivityManager().startLogActivity(this);
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        } else if(item.getItemId() == cc.winboll.studio.appbase.R.id.item_minimal) {
 | 
					        } else if(item.getItemId() == cc.winboll.studio.appbase.R.id.item_minimal) {
 | 
				
			||||||
            moveTaskToBack(true);
 | 
					            moveTaskToBack(true);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,11 +39,15 @@
 | 
				
			|||||||
					android:layout_height="wrap_content"
 | 
										android:layout_height="wrap_content"
 | 
				
			||||||
					android:text="Android版本10的代号是“Q”,API级别是29。   Android 10开始谷歌不再公开使用甜品作为版本代号,但内部仍保留了大量与“Q”相关的元素。Android 10本身并没有严格对应某个特定的Java版本,但在开发Android 10应用时,通常可以使用Java 8或更高版本。   Java 8为Android开发带来了诸如Lambda表达式、方法引用等新特性,能提高开发效率和代码可读性,与Android 10开发适配良好。Java 9及更高版本也可用于Android 10开发,能使用一些新的语言特性和API,但可能需要注意兼容性和配置问题。"/>
 | 
										android:text="Android版本10的代号是“Q”,API级别是29。   Android 10开始谷歌不再公开使用甜品作为版本代号,但内部仍保留了大量与“Q”相关的元素。Android 10本身并没有严格对应某个特定的Java版本,但在开发Android 10应用时,通常可以使用Java 8或更高版本。   Java 8为Android开发带来了诸如Lambda表达式、方法引用等新特性,能提高开发效率和代码可读性,与Android 10开发适配良好。Java 9及更高版本也可用于Android 10开发,能使用一些新的语言特性和API,但可能需要注意兼容性和配置问题。"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									<HorizontalScrollView
 | 
				
			||||||
 | 
										android:layout_width="match_parent"
 | 
				
			||||||
 | 
										android:layout_height="wrap_content">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					<LinearLayout
 | 
										<LinearLayout
 | 
				
			||||||
						android:orientation="horizontal"
 | 
											android:orientation="horizontal"
 | 
				
			||||||
					android:layout_width="match_parent"
 | 
					 | 
				
			||||||
						android:layout_height="wrap_content"
 | 
											android:layout_height="wrap_content"
 | 
				
			||||||
					android:gravity="right|center_vertical">
 | 
											android:gravity="right|center_vertical"
 | 
				
			||||||
 | 
											android:layout_width="wrap_content">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						<CheckBox
 | 
											<CheckBox
 | 
				
			||||||
							android:layout_width="wrap_content"
 | 
												android:layout_width="wrap_content"
 | 
				
			||||||
@@ -60,8 +64,16 @@
 | 
				
			|||||||
							android:textAllCaps="false"
 | 
												android:textAllCaps="false"
 | 
				
			||||||
							android:onClick="onTestApplicationCrashReport"/>
 | 
												android:onClick="onTestApplicationCrashReport"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
											<Button
 | 
				
			||||||
 | 
												android:layout_width="wrap_content"
 | 
				
			||||||
 | 
												android:layout_height="wrap_content"
 | 
				
			||||||
 | 
												android:text="PreviewGlobalCrashActivity"
 | 
				
			||||||
 | 
												android:onClick="onPreviewGlobalCrashActivity"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					</LinearLayout>
 | 
										</LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									</HorizontalScrollView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				<ScrollView
 | 
									<ScrollView
 | 
				
			||||||
					android:layout_width="match_parent"
 | 
										android:layout_width="match_parent"
 | 
				
			||||||
					android:layout_height="400dp">
 | 
										android:layout_height="400dp">
 | 
				
			||||||
@@ -90,6 +102,7 @@
 | 
				
			|||||||
								android:text="StopCenter"
 | 
													android:text="StopCenter"
 | 
				
			||||||
								android:textAllCaps="false"
 | 
													android:textAllCaps="false"
 | 
				
			||||||
								android:onClick="onStopCenter"/>
 | 
													android:onClick="onStopCenter"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						</LinearLayout>
 | 
											</LinearLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						<HorizontalScrollView
 | 
											<HorizontalScrollView
 | 
				
			||||||
@@ -160,7 +173,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
						</HorizontalScrollView>
 | 
											</HorizontalScrollView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
						<Button
 | 
											<Button
 | 
				
			||||||
							android:layout_width="wrap_content"
 | 
												android:layout_width="wrap_content"
 | 
				
			||||||
							android:layout_height="wrap_content"
 | 
												android:layout_height="wrap_content"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
#Created by .winboll/winboll_app_build.gradle
 | 
					#Created by .winboll/winboll_app_build.gradle
 | 
				
			||||||
#Thu Mar 27 10:59:31 GMT 2025
 | 
					#Fri Mar 28 05:17:15 GMT 2025
 | 
				
			||||||
stageCount=1
 | 
					stageCount=1
 | 
				
			||||||
libraryProject=libappbase
 | 
					libraryProject=libappbase
 | 
				
			||||||
baseVersion=15.1
 | 
					baseVersion=15.1
 | 
				
			||||||
publishVersion=15.1.0
 | 
					publishVersion=15.1.0
 | 
				
			||||||
buildCount=130
 | 
					buildCount=143
 | 
				
			||||||
baseBetaVersion=15.1.1
 | 
					baseBetaVersion=15.1.1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,8 @@
 | 
				
			|||||||
        <activity
 | 
					        <activity
 | 
				
			||||||
            android:name=".CrashHandler$CrashActivity"
 | 
					            android:name=".CrashHandler$CrashActivity"
 | 
				
			||||||
            android:label="CrashActivity"
 | 
					            android:label="CrashActivity"
 | 
				
			||||||
            android:launchMode="standard"/>
 | 
					            android:launchMode="singleInstance"
 | 
				
			||||||
 | 
					            android:process=":CrashActivity"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <activity
 | 
					        <activity
 | 
				
			||||||
            android:name=".GlobalCrashActivity"
 | 
					            android:name=".GlobalCrashActivity"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -339,6 +339,7 @@ public final class CrashHandler {
 | 
				
			|||||||
                    int padding = dp2px(16);
 | 
					                    int padding = dp2px(16);
 | 
				
			||||||
                    message.setPadding(padding, padding, padding, padding);
 | 
					                    message.setPadding(padding, padding, padding, padding);
 | 
				
			||||||
                    message.setText(mLog);
 | 
					                    message.setText(mLog);
 | 
				
			||||||
 | 
					                    message.setTextColor(Color.BLACK);
 | 
				
			||||||
                    message.setTextIsSelectable(true);
 | 
					                    message.setTextIsSelectable(true);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                hw.addView(message);
 | 
					                hw.addView(message);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,11 +19,6 @@ public class GlobalApplication extends Application {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public static final String TAG = "GlobalApplication";
 | 
					    public static final String TAG = "GlobalApplication";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    final static String PREFS = GlobalApplication.class.getName() + "PREFS";
 | 
					 | 
				
			||||||
    final static String PREFS_ISDEBUGING = "PREFS_ISDEBUGING";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    volatile static GlobalApplication _GlobalApplication;
 | 
					    volatile static GlobalApplication _GlobalApplication;
 | 
				
			||||||
    // 是否处于调试状态
 | 
					    // 是否处于调试状态
 | 
				
			||||||
    volatile static boolean isDebuging = false;
 | 
					    volatile static boolean isDebuging = false;
 | 
				
			||||||
@@ -33,14 +28,6 @@ public class GlobalApplication extends Application {
 | 
				
			|||||||
        if (_GlobalApplication != null) {
 | 
					        if (_GlobalApplication != null) {
 | 
				
			||||||
            GlobalApplication.isDebuging = isDebuging;
 | 
					            GlobalApplication.isDebuging = isDebuging;
 | 
				
			||||||
            APPBaseModel.saveBeanToFile(getAPPBaseModelFilePath(), new APPBaseModel(isDebuging));
 | 
					            APPBaseModel.saveBeanToFile(getAPPBaseModelFilePath(), new APPBaseModel(isDebuging));
 | 
				
			||||||
            // 获取SharedPreferences实例
 | 
					 | 
				
			||||||
//        SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE);
 | 
					 | 
				
			||||||
//        // 获取编辑器
 | 
					 | 
				
			||||||
//        SharedPreferences.Editor editor = sharedPreferences.edit();
 | 
					 | 
				
			||||||
//        // 保存数据
 | 
					 | 
				
			||||||
//        editor.putBoolean(PREFS_ISDEBUGING, GlobalApplication.isDebuging);
 | 
					 | 
				
			||||||
//        // 提交更改
 | 
					 | 
				
			||||||
//        editor.apply();
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -56,31 +43,29 @@ public class GlobalApplication extends Application {
 | 
				
			|||||||
        return isDebuging;
 | 
					        return isDebuging;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    public static WinBollActivityManager getWinBollActivityManager() {
 | 
				
			||||||
    public Context getApplicationContext() {
 | 
					        return WinBollActivityManager.getInstance(_GlobalApplication);
 | 
				
			||||||
        return super.getApplicationContext();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Application getApplication() {
 | 
					 | 
				
			||||||
        return this;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onCreate() {
 | 
					    public void onCreate() {
 | 
				
			||||||
        super.onCreate();
 | 
					        super.onCreate();
 | 
				
			||||||
 | 
					        // 保存初始实例
 | 
				
			||||||
        // _GlobalApplication 取值调试部分
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        boolean is_GlobalApplicationNull = false;
 | 
					 | 
				
			||||||
        if (_GlobalApplication == null) {
 | 
					 | 
				
			||||||
            is_GlobalApplicationNull = true;
 | 
					 | 
				
			||||||
        _GlobalApplication = this;
 | 
					        _GlobalApplication = this;
 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            is_GlobalApplicationNull = false;
 | 
					 | 
				
			||||||
            _GlobalApplication = this;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        // 设置应用调试标志
 | 
					        setIsDebuging(true);
 | 
				
			||||||
 | 
					        // 添加日志模块
 | 
				
			||||||
 | 
					        LogUtils.init(this);
 | 
				
			||||||
 | 
					        //LogUtils.setLogLevel(LogUtils.LOG_LEVEL.Debug);
 | 
				
			||||||
 | 
					        //LogUtils.setTAGListEnable(GlobalApplication.TAG, true);
 | 
				
			||||||
 | 
					        //LogUtils.setALlTAGListEnable(true);
 | 
				
			||||||
 | 
					        //LogUtils.d(TAG, "LogUtils init");
 | 
				
			||||||
 | 
					        // 设置应用异常处理窗口
 | 
				
			||||||
 | 
					        CrashHandler.init(this);
 | 
				
			||||||
 | 
					        // 初始化 Toast 框架
 | 
				
			||||||
 | 
					        ToastUtils.init(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 应用保存的调试标志
 | 
				
			||||||
        APPBaseModel appBaseModel = APPBaseModel.loadBeanFromFile(getAPPBaseModelFilePath(), APPBaseModel.class);
 | 
					        APPBaseModel appBaseModel = APPBaseModel.loadBeanFromFile(getAPPBaseModelFilePath(), APPBaseModel.class);
 | 
				
			||||||
        if (appBaseModel == null) {
 | 
					        if (appBaseModel == null) {
 | 
				
			||||||
            setIsDebuging(false);
 | 
					            setIsDebuging(false);
 | 
				
			||||||
@@ -88,34 +73,17 @@ public class GlobalApplication extends Application {
 | 
				
			|||||||
            setIsDebuging(appBaseModel.isDebuging());
 | 
					            setIsDebuging(appBaseModel.isDebuging());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        LogUtils.init(this);
 | 
					//        WinBollActivityManager.getInstance(_GlobalApplication);
 | 
				
			||||||
        //LogUtils.setLogLevel(LogUtils.LOG_LEVEL.Debug);
 | 
					//        WinBollActivityManager.getInstance(_GlobalApplication).setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Service);
 | 
				
			||||||
        //LogUtils.setTAGListEnable(GlobalApplication.TAG, true);
 | 
					//        // 注册回调
 | 
				
			||||||
        //LogUtils.setALlTAGListEnable(true);
 | 
					//        mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks();
 | 
				
			||||||
        //LogUtils.d(TAG, "LogUtils init");
 | 
					//        registerActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 设置应用异常处理窗口
 | 
					 | 
				
			||||||
        CrashHandler.init(this);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 初始化 Toast 框架
 | 
					 | 
				
			||||||
        ToastUtils.init(this);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // _GlobalApplication 取值调试部分
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        LogUtils.d(TAG, String.format("is_GlobalApplicationNull is %s", is_GlobalApplicationNull));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        WinBollActivityManager.getInstance(_GlobalApplication);
 | 
					 | 
				
			||||||
        WinBollActivityManager.getInstance(_GlobalApplication).setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Service);
 | 
					 | 
				
			||||||
        // 注册回调
 | 
					 | 
				
			||||||
        mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks();
 | 
					 | 
				
			||||||
        registerActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onTerminate() {
 | 
					    public void onTerminate() {
 | 
				
			||||||
        super.onTerminate();
 | 
					        super.onTerminate();
 | 
				
			||||||
        _GlobalApplication = null;
 | 
					 | 
				
			||||||
        // 注销回调(非必须,但建议释放资源)
 | 
					        // 注销回调(非必须,但建议释放资源)
 | 
				
			||||||
        unregisterActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks);
 | 
					        unregisterActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,26 +4,20 @@ package cc.winboll.studio.libappbase;
 | 
				
			|||||||
 * @Author ZhanGSKen@AliYun.Com
 | 
					 * @Author ZhanGSKen@AliYun.Com
 | 
				
			||||||
 * @Date 2025/02/11 00:14:05
 | 
					 * @Date 2025/02/11 00:14:05
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
import android.app.Activity;
 | 
					 | 
				
			||||||
import android.content.ClipData;
 | 
					import android.content.ClipData;
 | 
				
			||||||
import android.content.ClipboardManager;
 | 
					import android.content.ClipboardManager;
 | 
				
			||||||
import android.content.Context;
 | 
					import android.content.Context;
 | 
				
			||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import android.content.pm.PackageManager;
 | 
					import android.content.pm.PackageManager;
 | 
				
			||||||
import android.content.res.TypedArray;
 | 
					 | 
				
			||||||
import android.graphics.Color;
 | 
					 | 
				
			||||||
import android.net.Uri;
 | 
					import android.net.Uri;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
import android.text.SpannableString;
 | 
					import android.support.v7.app.AppCompatActivity;
 | 
				
			||||||
import android.text.style.ForegroundColorSpan;
 | 
					 | 
				
			||||||
import android.view.Menu;
 | 
					import android.view.Menu;
 | 
				
			||||||
import android.view.MenuItem;
 | 
					import android.view.MenuItem;
 | 
				
			||||||
import android.widget.LinearLayout;
 | 
					 | 
				
			||||||
import android.widget.TextView;
 | 
					 | 
				
			||||||
import android.widget.Toast;
 | 
					import android.widget.Toast;
 | 
				
			||||||
import cc.winboll.studio.libappbase.R;
 | 
					import cc.winboll.studio.libappbase.R;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public final class GlobalCrashActivity extends Activity implements MenuItem.OnMenuItemClickListener {
 | 
					public final class GlobalCrashActivity extends AppCompatActivity implements MenuItem.OnMenuItemClickListener {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final int MENUITEM_COPY = 0;
 | 
					    private static final int MENUITEM_COPY = 0;
 | 
				
			||||||
    private static final int MENUITEM_RESTART = 1;
 | 
					    private static final int MENUITEM_RESTART = 1;
 | 
				
			||||||
@@ -47,8 +41,8 @@ public final class GlobalCrashActivity extends Activity implements MenuItem.OnMe
 | 
				
			|||||||
        mGlobalCrashReportView.setReport(mLog);
 | 
					        mGlobalCrashReportView.setReport(mLog);
 | 
				
			||||||
        setActionBar(mGlobalCrashReportView.getToolbar());
 | 
					        setActionBar(mGlobalCrashReportView.getToolbar());
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        getActionBar().setTitle(CrashHandler.TITTLE);
 | 
					        getSupportActionBar().setTitle(CrashHandler.TITTLE);
 | 
				
			||||||
        getActionBar().setSubtitle(GlobalApplication.getAppName(getApplicationContext()));
 | 
					        getSupportActionBar().setSubtitle(GlobalApplication.getAppName(getApplicationContext()));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -98,20 +92,4 @@ public final class GlobalCrashActivity extends Activity implements MenuItem.OnMe
 | 
				
			|||||||
        mGlobalCrashReportView.updateMenuStyle();
 | 
					        mGlobalCrashReportView.updateMenuStyle();
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    void joinQQGroup(String key) {
 | 
					 | 
				
			||||||
        // 创建Intent
 | 
					 | 
				
			||||||
        Intent intent = new Intent();
 | 
					 | 
				
			||||||
        // 设置动作
 | 
					 | 
				
			||||||
        intent.setAction("android.intent.action.VIEW");
 | 
					 | 
				
			||||||
        // 设置数据为网址的URI
 | 
					 | 
				
			||||||
        Uri content_url = Uri.parse("https://www.winboll.cc");
 | 
					 | 
				
			||||||
        intent.setData(content_url);
 | 
					 | 
				
			||||||
        // 添加标志
 | 
					 | 
				
			||||||
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 | 
					 | 
				
			||||||
        // 设置类名和活动名
 | 
					 | 
				
			||||||
        intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
 | 
					 | 
				
			||||||
        // 启动Activity
 | 
					 | 
				
			||||||
        startActivity(intent);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ import android.app.ActivityManager;
 | 
				
			|||||||
import android.app.TaskStackBuilder;
 | 
					import android.app.TaskStackBuilder;
 | 
				
			||||||
import android.content.Context;
 | 
					import android.content.Context;
 | 
				
			||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
 | 
					import cc.winboll.studio.libappbase.GlobalApplication;
 | 
				
			||||||
import cc.winboll.studio.libappbase.LogUtils;
 | 
					import cc.winboll.studio.libappbase.LogUtils;
 | 
				
			||||||
import cc.winboll.studio.libappbase.utils.ToastUtils;
 | 
					import cc.winboll.studio.libappbase.utils.ToastUtils;
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
@@ -29,27 +30,25 @@ public class WinBollActivityManager {
 | 
				
			|||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 应用类型标志
 | 
					    // 应用类型标志
 | 
				
			||||||
    volatile static WinBollUI_TYPE _mWinBollUI_TYPE = WinBollUI_TYPE.Service;
 | 
					    static volatile WinBollUI_TYPE _mWinBollUI_TYPE = WinBollUI_TYPE.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Context mContext;
 | 
					    GlobalApplication mGlobalApplication;
 | 
				
			||||||
    MyActivityLifecycleCallbacks mMyActivityLifecycleCallbacks;
 | 
					    static volatile WinBollActivityManager _Instance;
 | 
				
			||||||
    static volatile WinBollActivityManager _mWinBollActivityManager;
 | 
					 | 
				
			||||||
    static volatile Map<String, IWinBollActivity> _mapIWinBollList;
 | 
					    static volatile Map<String, IWinBollActivity> _mapIWinBollList;
 | 
				
			||||||
    static volatile IWinBollActivity firstIWinBollActivity;
 | 
					    volatile IWinBollActivity mFirstIWinBollActivity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public WinBollActivityManager(Context context) {
 | 
					    WinBollActivityManager(GlobalApplication application) {
 | 
				
			||||||
        mContext = context;
 | 
					        mGlobalApplication = application;
 | 
				
			||||||
        LogUtils.d(TAG, "WinBollActivityManager()");
 | 
					 | 
				
			||||||
        _mapIWinBollList = new HashMap<String, IWinBollActivity>();
 | 
					        _mapIWinBollList = new HashMap<String, IWinBollActivity>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static synchronized WinBollActivityManager getInstance(Context context) {
 | 
					    public static synchronized WinBollActivityManager getInstance(GlobalApplication application) {
 | 
				
			||||||
        LogUtils.d(TAG, "getInstance");
 | 
					        LogUtils.d(TAG, "getInstance");
 | 
				
			||||||
        if (_mWinBollActivityManager == null) {
 | 
					        if (_Instance == null) {
 | 
				
			||||||
            LogUtils.d(TAG, "_mWinBollActivityManager == null");
 | 
					            LogUtils.d(TAG, "_Instance == null");
 | 
				
			||||||
            _mWinBollActivityManager = new WinBollActivityManager(context);
 | 
					            _Instance = new WinBollActivityManager(application);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return _mWinBollActivityManager;
 | 
					        return _Instance;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
@@ -73,11 +72,12 @@ public class WinBollActivityManager {
 | 
				
			|||||||
        String tag = ((IWinBollActivity)iWinBoll).getTag();
 | 
					        String tag = ((IWinBollActivity)iWinBoll).getTag();
 | 
				
			||||||
        LogUtils.d(TAG, String.format("add(T iWinBoll) tag is %s", tag));
 | 
					        LogUtils.d(TAG, String.format("add(T iWinBoll) tag is %s", tag));
 | 
				
			||||||
        if (isActive(tag)) {
 | 
					        if (isActive(tag)) {
 | 
				
			||||||
            LogUtils.d(TAG, String.format("add(...) %s is active.", iWinBoll.getTag()));
 | 
					            LogUtils.d(TAG, String.format("isActive(tag) is true, tag : %s.", tag));
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            // 设置起始活动窗口,以便最后退出时提问
 | 
					            // 设置起始活动窗口,以便最后退出时提问
 | 
				
			||||||
            if (firstIWinBollActivity == null && _mapIWinBollList.size() == 0) {
 | 
					            if (mFirstIWinBollActivity == null && _mapIWinBollList.size() == 0) {
 | 
				
			||||||
                firstIWinBollActivity = iWinBoll;
 | 
					                LogUtils.d(TAG, "Set firstIWinBollActivity, iWinBoll.getTag() is %s" + iWinBoll.getTag());
 | 
				
			||||||
 | 
					                mFirstIWinBollActivity = iWinBoll;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // 添加到活动窗口列表
 | 
					            // 添加到活动窗口列表
 | 
				
			||||||
@@ -168,7 +168,7 @@ public class WinBollActivityManager {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean isFirstIWinBollActivity(IWinBollActivity iWinBollActivity) {
 | 
					    public boolean isFirstIWinBollActivity(IWinBollActivity iWinBollActivity) {
 | 
				
			||||||
        return firstIWinBollActivity != null && firstIWinBollActivity == iWinBollActivity;
 | 
					        return mFirstIWinBollActivity != null && mFirstIWinBollActivity == iWinBollActivity;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
@@ -220,10 +220,10 @@ public class WinBollActivityManager {
 | 
				
			|||||||
    //
 | 
					    //
 | 
				
			||||||
    public <T extends IWinBollActivity> void resumeActivity(Context context, T iWinBoll) {
 | 
					    public <T extends IWinBollActivity> void resumeActivity(Context context, T iWinBoll) {
 | 
				
			||||||
        LogUtils.d(TAG, "resumeActivity(Context context, T iWinBoll)");
 | 
					        LogUtils.d(TAG, "resumeActivity(Context context, T iWinBoll)");
 | 
				
			||||||
        ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
 | 
					        ActivityManager am = (ActivityManager) mGlobalApplication.getSystemService(Context.ACTIVITY_SERVICE);
 | 
				
			||||||
        //返回启动它的根任务(home 或者 MainActivity)
 | 
					        //返回启动它的根任务(home 或者 MainActivity)
 | 
				
			||||||
        Intent intent = new Intent(mContext, iWinBoll.getClass());
 | 
					        Intent intent = new Intent(mGlobalApplication, iWinBoll.getClass());
 | 
				
			||||||
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext);
 | 
					        TaskStackBuilder stackBuilder = TaskStackBuilder.create(mGlobalApplication);
 | 
				
			||||||
        stackBuilder.addNextIntentWithParentStack(intent);
 | 
					        stackBuilder.addNextIntentWithParentStack(intent);
 | 
				
			||||||
        stackBuilder.startActivities();
 | 
					        stackBuilder.startActivities();
 | 
				
			||||||
        //moveTaskToFront(YourTaskId, 0);
 | 
					        //moveTaskToFront(YourTaskId, 0);
 | 
				
			||||||
@@ -287,7 +287,7 @@ public class WinBollActivityManager {
 | 
				
			|||||||
                IWinBollActivity preIWinBoll = getPreIWinBoll(iWinBoll);
 | 
					                IWinBollActivity preIWinBoll = getPreIWinBoll(iWinBoll);
 | 
				
			||||||
                iWinBoll.getActivity().finish();
 | 
					                iWinBoll.getActivity().finish();
 | 
				
			||||||
                if (preIWinBoll != null) {
 | 
					                if (preIWinBoll != null) {
 | 
				
			||||||
                    resumeActivity(mContext, preIWinBoll);
 | 
					                    resumeActivity(mGlobalApplication, preIWinBoll);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user