取消窗口管理模块,修复应用崩溃调试模块。
This commit is contained in:
parent
6ca7b210a6
commit
6a9434b194
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user