取消窗口管理模块,修复应用崩溃调试模块。
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
#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
|
||||
libraryProject=libappbase
|
||||
baseVersion=15.1
|
||||
publishVersion=15.1.0
|
||||
buildCount=130
|
||||
buildCount=143
|
||||
baseBetaVersion=15.1.1
|
||||
|
@@ -14,7 +14,8 @@
|
||||
<activity
|
||||
android:name=".CrashHandler$CrashActivity"
|
||||
android:label="CrashActivity"
|
||||
android:launchMode="standard"/>
|
||||
android:launchMode="singleInstance"
|
||||
android:process=":CrashActivity"/>
|
||||
|
||||
<activity
|
||||
android:name=".GlobalCrashActivity"
|
||||
|
@@ -339,6 +339,7 @@ public final class CrashHandler {
|
||||
int padding = dp2px(16);
|
||||
message.setPadding(padding, padding, padding, padding);
|
||||
message.setText(mLog);
|
||||
message.setTextColor(Color.BLACK);
|
||||
message.setTextIsSelectable(true);
|
||||
}
|
||||
hw.addView(message);
|
||||
|
@@ -19,11 +19,6 @@ public class GlobalApplication extends Application {
|
||||
|
||||
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 boolean isDebuging = false;
|
||||
@@ -33,14 +28,6 @@ public class GlobalApplication extends Application {
|
||||
if (_GlobalApplication != null) {
|
||||
GlobalApplication.isDebuging = 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,66 +43,47 @@ public class GlobalApplication extends Application {
|
||||
return isDebuging;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Context getApplicationContext() {
|
||||
return super.getApplicationContext();
|
||||
}
|
||||
|
||||
public Application getApplication() {
|
||||
return this;
|
||||
public static WinBollActivityManager getWinBollActivityManager() {
|
||||
return WinBollActivityManager.getInstance(_GlobalApplication);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
// 保存初始实例
|
||||
_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);
|
||||
|
||||
// _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);
|
||||
if (appBaseModel == null) {
|
||||
setIsDebuging(false);
|
||||
} else {
|
||||
setIsDebuging(appBaseModel.isDebuging());
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
// _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);
|
||||
|
||||
// WinBollActivityManager.getInstance(_GlobalApplication);
|
||||
// WinBollActivityManager.getInstance(_GlobalApplication).setWinBollUI_TYPE(WinBollActivityManager.WinBollUI_TYPE.Service);
|
||||
// // 注册回调
|
||||
// mMyActivityLifecycleCallbacks = new MyActivityLifecycleCallbacks();
|
||||
// registerActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onTerminate() {
|
||||
super.onTerminate();
|
||||
_GlobalApplication = null;
|
||||
// 注销回调(非必须,但建议释放资源)
|
||||
unregisterActivityLifecycleCallbacks(mMyActivityLifecycleCallbacks);
|
||||
}
|
||||
|
@@ -4,26 +4,20 @@ package cc.winboll.studio.libappbase;
|
||||
* @Author ZhanGSKen@AliYun.Com
|
||||
* @Date 2025/02/11 00:14:05
|
||||
*/
|
||||
import android.app.Activity;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Color;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
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_RESTART = 1;
|
||||
@@ -47,8 +41,8 @@ public final class GlobalCrashActivity extends Activity implements MenuItem.OnMe
|
||||
mGlobalCrashReportView.setReport(mLog);
|
||||
setActionBar(mGlobalCrashReportView.getToolbar());
|
||||
|
||||
getActionBar().setTitle(CrashHandler.TITTLE);
|
||||
getActionBar().setSubtitle(GlobalApplication.getAppName(getApplicationContext()));
|
||||
getSupportActionBar().setTitle(CrashHandler.TITTLE);
|
||||
getSupportActionBar().setSubtitle(GlobalApplication.getAppName(getApplicationContext()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -98,20 +92,4 @@ public final class GlobalCrashActivity extends Activity implements MenuItem.OnMe
|
||||
mGlobalCrashReportView.updateMenuStyle();
|
||||
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.content.Context;
|
||||
import android.content.Intent;
|
||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||
import cc.winboll.studio.libappbase.LogUtils;
|
||||
import cc.winboll.studio.libappbase.utils.ToastUtils;
|
||||
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;
|
||||
MyActivityLifecycleCallbacks mMyActivityLifecycleCallbacks;
|
||||
static volatile WinBollActivityManager _mWinBollActivityManager;
|
||||
GlobalApplication mGlobalApplication;
|
||||
static volatile WinBollActivityManager _Instance;
|
||||
static volatile Map<String, IWinBollActivity> _mapIWinBollList;
|
||||
static volatile IWinBollActivity firstIWinBollActivity;
|
||||
volatile IWinBollActivity mFirstIWinBollActivity;
|
||||
|
||||
public WinBollActivityManager(Context context) {
|
||||
mContext = context;
|
||||
LogUtils.d(TAG, "WinBollActivityManager()");
|
||||
WinBollActivityManager(GlobalApplication application) {
|
||||
mGlobalApplication = application;
|
||||
_mapIWinBollList = new HashMap<String, IWinBollActivity>();
|
||||
}
|
||||
|
||||
public static synchronized WinBollActivityManager getInstance(Context context) {
|
||||
public static synchronized WinBollActivityManager getInstance(GlobalApplication application) {
|
||||
LogUtils.d(TAG, "getInstance");
|
||||
if (_mWinBollActivityManager == null) {
|
||||
LogUtils.d(TAG, "_mWinBollActivityManager == null");
|
||||
_mWinBollActivityManager = new WinBollActivityManager(context);
|
||||
if (_Instance == null) {
|
||||
LogUtils.d(TAG, "_Instance == null");
|
||||
_Instance = new WinBollActivityManager(application);
|
||||
}
|
||||
return _mWinBollActivityManager;
|
||||
return _Instance;
|
||||
}
|
||||
|
||||
//
|
||||
@@ -73,11 +72,12 @@ public class WinBollActivityManager {
|
||||
String tag = ((IWinBollActivity)iWinBoll).getTag();
|
||||
LogUtils.d(TAG, String.format("add(T iWinBoll) tag is %s", 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 {
|
||||
// 设置起始活动窗口,以便最后退出时提问
|
||||
if (firstIWinBollActivity == null && _mapIWinBollList.size() == 0) {
|
||||
firstIWinBollActivity = iWinBoll;
|
||||
if (mFirstIWinBollActivity == null && _mapIWinBollList.size() == 0) {
|
||||
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) {
|
||||
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) {
|
||||
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)
|
||||
Intent intent = new Intent(mContext, iWinBoll.getClass());
|
||||
TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext);
|
||||
Intent intent = new Intent(mGlobalApplication, iWinBoll.getClass());
|
||||
TaskStackBuilder stackBuilder = TaskStackBuilder.create(mGlobalApplication);
|
||||
stackBuilder.addNextIntentWithParentStack(intent);
|
||||
stackBuilder.startActivities();
|
||||
//moveTaskToFront(YourTaskId, 0);
|
||||
@@ -287,7 +287,7 @@ public class WinBollActivityManager {
|
||||
IWinBollActivity preIWinBoll = getPreIWinBoll(iWinBoll);
|
||||
iWinBoll.getActivity().finish();
|
||||
if (preIWinBoll != null) {
|
||||
resumeActivity(mContext, preIWinBoll);
|
||||
resumeActivity(mGlobalApplication, preIWinBoll);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user