diff --git a/bytheway/build.properties b/bytheway/build.properties
index f9d39e4..4391fe0 100644
--- a/bytheway/build.properties
+++ b/bytheway/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Mon Jul 06 20:33:32 CST 2026
+#Mon Jul 06 16:31:22 GMT 2026
stageCount=2
libraryProject=
baseVersion=15.20
publishVersion=15.20.1
-buildCount=16
+buildCount=19
baseBetaVersion=15.20.2
diff --git a/bytheway/src/main/AndroidManifest.xml b/bytheway/src/main/AndroidManifest.xml
index 8a4f318..e8d7bc7 100644
--- a/bytheway/src/main/AndroidManifest.xml
+++ b/bytheway/src/main/AndroidManifest.xml
@@ -12,7 +12,7 @@
-
+
+
+
\ No newline at end of file
diff --git a/bytheway/src/main/java/cc/winboll/studio/bytheway/App.java b/bytheway/src/main/java/cc/winboll/studio/bytheway/App.java
index 24507f6..401ac1b 100644
--- a/bytheway/src/main/java/cc/winboll/studio/bytheway/App.java
+++ b/bytheway/src/main/java/cc/winboll/studio/bytheway/App.java
@@ -21,11 +21,11 @@ import android.widget.HorizontalScrollView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
-import cc.winboll.studio.libappbase.CrashActivity;
+import cc.winboll.studio.libaes.utils.AESThemeUtil;
+import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.ToastUtils;
import cc.winboll.studio.libappbase.utils.CrashHandleNotifyUtils;
-import cc.winboll.studio.libaes.utils.AESThemeUtil;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
@@ -53,6 +53,7 @@ public class App extends GlobalApplication {
public void onCreate() {
try {
super.onCreate();
+ WinBoLLActivityManager.init(this);
// 初始化主题样式ID列表
AESThemeUtil.init(null);
diff --git a/bytheway/src/main/java/cc/winboll/studio/bytheway/MainActivity.java b/bytheway/src/main/java/cc/winboll/studio/bytheway/MainActivity.java
index 12ad8ab..714fef7 100644
--- a/bytheway/src/main/java/cc/winboll/studio/bytheway/MainActivity.java
+++ b/bytheway/src/main/java/cc/winboll/studio/bytheway/MainActivity.java
@@ -2,26 +2,30 @@ package cc.winboll.studio.bytheway;
import android.content.Intent;
import android.os.Bundle;
-import cc.winboll.studio.bytheway.activities.GpsListActivity;
-import cc.winboll.studio.bytheway.activities.SettingsActivity;
import android.view.Menu;
import android.view.MenuItem;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
-import cc.winboll.studio.libappbase.GlobalApplication;
-import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.LogView;
-import cc.winboll.studio.libappbase.ToastUtils;
+import cc.winboll.studio.bytheway.activities.BaseWinBoLLActivity;
+import cc.winboll.studio.bytheway.activities.GpsListActivity;
+import cc.winboll.studio.bytheway.activities.SettingsActivity;
import cc.winboll.studio.libaes.utils.AESThemeUtil;
import cc.winboll.studio.libaes.utils.DevelopUtils;
+import cc.winboll.studio.libappbase.GlobalApplication;
+import cc.winboll.studio.libappbase.LogUtils;
+import cc.winboll.studio.libappbase.ToastUtils;
-public class MainActivity extends AppCompatActivity {
+public class MainActivity extends BaseWinBoLLActivity {
+
+ public static final String TAG = "MainActivity";
- public static final String TAG = "MainActivity";
+ @Override
+ public String getTag() {
+ return TAG;
+ }
@Override
protected void onCreate(Bundle savedInstanceState) {
- AESThemeUtil.applyAppCompatTheme(this);
+ //AESThemeUtil.applyAppCompatTheme(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
diff --git a/bytheway/src/main/java/cc/winboll/studio/bytheway/activities/AboutActivity.java b/bytheway/src/main/java/cc/winboll/studio/bytheway/activities/AboutActivity.java
new file mode 100644
index 0000000..dd2215a
--- /dev/null
+++ b/bytheway/src/main/java/cc/winboll/studio/bytheway/activities/AboutActivity.java
@@ -0,0 +1,79 @@
+package cc.winboll.studio.bytheway.activities;
+
+import android.os.Bundle;
+import android.view.View;
+import androidx.appcompat.widget.Toolbar;
+import cc.winboll.studio.bytheway.MainActivity;
+import cc.winboll.studio.bytheway.R;
+import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
+import cc.winboll.studio.libappbase.LogUtils;
+import cc.winboll.studio.libappbase.models.APPInfo;
+import cc.winboll.studio.libappbase.views.AboutView;
+
+/**
+ * @Author 豆包&BigPickle&ZhanGSKen
+ * @Date 2026/07/07 00:17
+ * @Describe 应用介绍窗口
+ */
+public class AboutActivity extends BaseWinBoLLActivity {
+
+ public static final String TAG = "AboutActivity";
+
+ private Toolbar mToolbar;
+
+ @Override
+ public String getTag() {
+ return TAG;
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_about);
+
+ // 设置工具栏
+ initToolbar();
+
+ AboutView aboutView = findViewById(R.id.aboutview);
+ aboutView.setAPPInfo(genDefaultAppInfo());
+ }
+
+ private void initToolbar() {
+ LogUtils.d(TAG, "initToolbar() 开始初始化");
+ mToolbar = findViewById(R.id.toolbar);
+ if (mToolbar == null) {
+ LogUtils.e(TAG, "initToolbar() | Toolbar未找到");
+ return;
+ }
+ setSupportActionBar(mToolbar);
+ mToolbar.setSubtitle(getTag());
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ LogUtils.d(TAG, "导航栏 点击返回按钮");
+ WinBoLLActivityManager.getInstance().resumeActivity(MainActivity.class);
+ WinBoLLActivityManager.getInstance().finish(AboutActivity.this);
+ }
+ });
+ LogUtils.d(TAG, "initToolbar() 配置完成");
+ }
+
+ private APPInfo genDefaultAppInfo() {
+ LogUtils.d(TAG, "genDefaultAppInfo() 调用");
+ String branchName = "bytheway";
+ APPInfo appInfo = new APPInfo();
+ appInfo.setAppName(getString(R.string.app_name));
+ appInfo.setAppIcon(R.drawable.ic_winboll);
+ appInfo.setAppDescription(getString(R.string.app_description));
+ appInfo.setAppGitName("MyWinBoLL");
+ appInfo.setAppGitOwner("ZhanGSKen");
+ appInfo.setAppGitAPPBranch(branchName);
+ appInfo.setAppGitAPPSubProjectFolder(branchName);
+ appInfo.setAppHomePage("https://www.winboll.cc/apks/index.php?project=ByTheWay");
+ appInfo.setAppAPKName("ByTheWay");
+ appInfo.setAppAPKFolderName("ByTheWay");
+ LogUtils.d(TAG, "genDefaultAppInfo: 应用信息已生成");
+ return appInfo;
+ }
+}
diff --git a/bytheway/src/main/java/cc/winboll/studio/bytheway/activities/BaseWinBoLLActivity.java b/bytheway/src/main/java/cc/winboll/studio/bytheway/activities/BaseWinBoLLActivity.java
new file mode 100644
index 0000000..fbd1edf
--- /dev/null
+++ b/bytheway/src/main/java/cc/winboll/studio/bytheway/activities/BaseWinBoLLActivity.java
@@ -0,0 +1,46 @@
+package cc.winboll.studio.bytheway.activities;
+
+import android.app.Activity;
+import android.os.Bundle;
+import androidx.appcompat.app.AppCompatActivity;
+import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
+import cc.winboll.studio.libaes.models.AESThemeBean;
+import cc.winboll.studio.libaes.utils.AESThemeUtil;
+import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
+
+/**
+ * @Author 豆包&BigPickle&ZhanGSKen
+ * @Date 2026/07/07 00:21
+ * @Describe BaseWinBollActivity 【继承AppCompatActivity,保留核心能力,不额外暴露方法】
+ * 继承链路:BaseWinBoLLActivity → AppCompatActivity → FragmentActivity,AppCompat能力天然继承可用
+ */
+public abstract class BaseWinBoLLActivity extends AppCompatActivity implements IWinBoLLActivity {
+ public static final String TAG = "BaseWinBoLLActivity";
+
+ protected volatile AESThemeBean.ThemeType mThemeType;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ //AESThemeUtil.applyAppCompatTheme(this);
+ mThemeType = AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext()));
+ setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext()));
+ super.onCreate(savedInstanceState);
+ WinBoLLActivityManager.getInstance().add(this);
+ }
+
+ @Override
+ protected void onDestroy() {
+ WinBoLLActivityManager.getInstance().registeRemove(this);
+ super.onDestroy();
+ }
+
+ // 子类必须实现getTag(),确保唯一标识
+ @Override
+ public abstract String getTag();
+
+ @Override
+ public Activity getActivity() {
+ return this;
+ }
+}
+
diff --git a/bytheway/src/main/res/layout/activity_about.xml b/bytheway/src/main/res/layout/activity_about.xml
new file mode 100644
index 0000000..5cbe3fd
--- /dev/null
+++ b/bytheway/src/main/res/layout/activity_about.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
diff --git a/bytheway/src/main/res/values/strings.xml b/bytheway/src/main/res/values/strings.xml
index 1ef2496..b819e3c 100644
--- a/bytheway/src/main/res/values/strings.xml
+++ b/bytheway/src/main/res/values/strings.xml
@@ -2,4 +2,6 @@
ByTheWay
设置
GPS列表
+ The [ByTheWay] project is designed to quickly schedule task reminders related to time and location. Its main feature is the ability to quickly create task-related data.
+