From 952c8d8017e26d452e1191f8bae78ab699ae8f8a Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Tue, 13 Jan 2026 16:45:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4BaseWinBoLLActivity=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E7=B1=BB=E5=BA=93=E4=BD=BF=E7=94=A8=EF=BC=8C=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E9=9C=80=E8=87=AA=E5=AE=9A=E4=B9=89=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E7=B1=BB=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aes/build.properties | 4 +- .../cc/winboll/studio/aes/AboutActivity.java | 2 - .../studio/aes/BaseWinBoLLActivity.java | 45 +++ libaes/build.properties | 4 +- .../libaes/activitys/BaseWinBoLLActivity.java | 333 ------------------ .../activitys/DrawerFragmentActivity.java | 17 +- 6 files changed, 62 insertions(+), 343 deletions(-) create mode 100644 aes/src/main/java/cc/winboll/studio/aes/BaseWinBoLLActivity.java delete mode 100644 libaes/src/main/java/cc/winboll/studio/libaes/activitys/BaseWinBoLLActivity.java diff --git a/aes/build.properties b/aes/build.properties index e2e696a..0c198c0 100644 --- a/aes/build.properties +++ b/aes/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Tue Jan 13 16:27:34 HKT 2026 +#Tue Jan 13 08:43:44 GMT 2026 stageCount=7 libraryProject=libaes baseVersion=15.15 publishVersion=15.15.6 -buildCount=0 +buildCount=2 baseBetaVersion=15.15.7 diff --git a/aes/src/main/java/cc/winboll/studio/aes/AboutActivity.java b/aes/src/main/java/cc/winboll/studio/aes/AboutActivity.java index 16b9661..26c89bf 100644 --- a/aes/src/main/java/cc/winboll/studio/aes/AboutActivity.java +++ b/aes/src/main/java/cc/winboll/studio/aes/AboutActivity.java @@ -1,11 +1,9 @@ package cc.winboll.studio.aes; -import android.app.Activity; import android.os.Bundle; import android.view.View; import androidx.appcompat.widget.Toolbar; import cc.winboll.studio.aes.R; -import cc.winboll.studio.libaes.activitys.BaseWinBoLLActivity; import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.models.APPInfo; diff --git a/aes/src/main/java/cc/winboll/studio/aes/BaseWinBoLLActivity.java b/aes/src/main/java/cc/winboll/studio/aes/BaseWinBoLLActivity.java new file mode 100644 index 0000000..0526f82 --- /dev/null +++ b/aes/src/main/java/cc/winboll/studio/aes/BaseWinBoLLActivity.java @@ -0,0 +1,45 @@ +package cc.winboll.studio.aes; + +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 豆包&ZhanGSKen + * @Date 2026/01/13 16:35 + * @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) { + 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/libaes/build.properties b/libaes/build.properties index fce41d3..0c198c0 100644 --- a/libaes/build.properties +++ b/libaes/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Tue Jan 13 16:27:29 HKT 2026 +#Tue Jan 13 08:43:44 GMT 2026 stageCount=7 libraryProject=libaes baseVersion=15.15 publishVersion=15.15.6 -buildCount=0 +buildCount=2 baseBetaVersion=15.15.7 diff --git a/libaes/src/main/java/cc/winboll/studio/libaes/activitys/BaseWinBoLLActivity.java b/libaes/src/main/java/cc/winboll/studio/libaes/activitys/BaseWinBoLLActivity.java deleted file mode 100644 index 465e2e9..0000000 --- a/libaes/src/main/java/cc/winboll/studio/libaes/activitys/BaseWinBoLLActivity.java +++ /dev/null @@ -1,333 +0,0 @@ -package cc.winboll.studio.libaes.activitys; - -import android.app.Activity; -import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.os.Bundle; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.View; -import android.view.ViewGroup; -import androidx.annotation.CallSuper; -import androidx.annotation.ContentView; -import androidx.annotation.IdRes; -import androidx.annotation.LayoutRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.StyleRes; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.ActionBarDrawerToggle; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.app.AppCompatDelegate; -import androidx.appcompat.view.ActionMode; -import androidx.appcompat.widget.Toolbar; -import androidx.core.app.TaskStackBuilder; -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 豆包&ZhanGSKen - * @Date 2026/01/13 14:22 - * @Describe BaseWinBollActivity 【完整透传AppCompatActivity所有公开方法】 - * 继承链路:BaseWinBoLLActivity → AppCompatActivity → FragmentActivity,所有公开能力全暴露 - */ -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) { - mThemeType = getThemeType(); - setThemeStyle(); - super.onCreate(savedInstanceState); - WinBoLLActivityManager.getInstance().add(this); - //ToastUtils.show(getTag() + ": onCreate"); - } - - AESThemeBean.ThemeType getThemeType() { - /*SharedPreferences sharedPreferences = getSharedPreferences( - SHAREDPREFERENCES_NAME, MODE_PRIVATE); - return AESThemeBean.ThemeType.values()[((sharedPreferences.getInt(DRAWER_THEME_TYPE, AESThemeBean.ThemeType.DEFAULT.ordinal())))]; - */ - return AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext())); - } - - void setThemeStyle() { - //setTheme(AESThemeBean.getThemeStyle(getThemeType())); - setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext())); - } - - @Override - protected void onDestroy() { - WinBoLLActivityManager.getInstance().registeRemove(this); - super.onDestroy(); - } - - // 子类必须实现getTag(),确保唯一标识 - @Override - public abstract String getTag(); - - @Override - public Activity getActivity() { - return this; - } - - // ===================== 完整暴露AppCompatActivity 所有公开方法(按类定义顺序)===================== -// @ContentView -// public BaseWinBoLLActivity(@LayoutRes int contentLayoutId) { -// super(contentLayoutId); -// } - - @Override - public void addContentView(View view, ViewGroup.LayoutParams params) { - super.addContentView(view, params); - } - - @Override - protected void attachBaseContext(Context newBase) { - super.attachBaseContext(newBase); - } - - @Override - public void closeOptionsMenu() { - super.closeOptionsMenu(); - } - - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - return super.dispatchKeyEvent(event); - } - - @Override - public T findViewById(@IdRes int id) { - return super.findViewById(id); - } - - @NonNull - @Override - public AppCompatDelegate getDelegate() { - return super.getDelegate(); - } - - @Nullable - @Override - public ActionBarDrawerToggle.Delegate getDrawerToggleDelegate() { - return super.getDrawerToggleDelegate(); - } - - @NonNull - @Override - public MenuInflater getMenuInflater() { - return super.getMenuInflater(); - } - - @Override - public Resources getResources() { - return super.getResources(); - } - - @Nullable - @Override - public ActionBar getSupportActionBar() { - return super.getSupportActionBar(); - } - - @Nullable - @Override - public Intent getSupportParentActivityIntent() { - return super.getSupportParentActivityIntent(); - } - - @Override - public void invalidateOptionsMenu() { - super.invalidateOptionsMenu(); - } - - @Override - public void onConfigurationChanged(@NonNull Configuration newMetrics) { - super.onConfigurationChanged(newMetrics); - } - - @Override - public void onContentChanged() { - super.onContentChanged(); - } - - @Override - public void onCreateSupportNavigateUpTaskStack(@NonNull TaskStackBuilder builder) { - super.onCreateSupportNavigateUpTaskStack(builder); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - return super.onKeyDown(keyCode, event); - } - -// -// @Override -// public final boolean onMenuItemSelected(int featureId, @NonNull MenuItem item) { -// return super.onMenuItemSelected(featureId, item); -// } - - @Override - public boolean onMenuOpened(int featureId, Menu menu) { - return super.onMenuOpened(featureId, menu); - } - - @Override - protected void onNightModeChanged(int mode) { - super.onNightModeChanged(mode); - } - - @Override - public void onPanelClosed(int featureId, @NonNull Menu menu) { - super.onPanelClosed(featureId, menu); - } - - @Override - protected void onPostCreate(@Nullable Bundle savedInstanceState) { - super.onPostCreate(savedInstanceState); - } - - @Override - protected void onPostResume() { - super.onPostResume(); - } - - @Override - public void onPrepareSupportNavigateUpTaskStack(@NonNull TaskStackBuilder builder) { - super.onPrepareSupportNavigateUpTaskStack(builder); - } - - @Override - protected void onStart() { - super.onStart(); - } - - @Override - protected void onStop() { - super.onStop(); - } - - @CallSuper - @Override - public void onSupportActionModeFinished(@NonNull ActionMode mode) { - super.onSupportActionModeFinished(mode); - } - - @CallSuper - @Override - public void onSupportActionModeStarted(@NonNull ActionMode mode) { - super.onSupportActionModeStarted(mode); - } - - @Override - @Deprecated - public void onSupportContentChanged() { - super.onSupportContentChanged(); - } - - @Override - public boolean onSupportNavigateUp() { - return super.onSupportNavigateUp(); - } - - @Override - protected void onTitleChanged(CharSequence title, int color) { - super.onTitleChanged(title, color); - } - - @Nullable - @Override - public ActionMode onWindowStartingSupportActionMode(@NonNull ActionMode.Callback callback) { - return super.onWindowStartingSupportActionMode(callback); - } - - @Override - public void openOptionsMenu() { - super.openOptionsMenu(); - } - - @Override - public void setContentView(@LayoutRes int layoutResID) { - super.setContentView(layoutResID); - } - - @Override - public void setContentView(View view) { - super.setContentView(view); - } - - @Override - public void setContentView(View view, ViewGroup.LayoutParams params) { - super.setContentView(view, params); - } - - @Override - public void setSupportActionBar(@Nullable androidx.appcompat.widget.Toolbar toolbar) { - super.setSupportActionBar(toolbar); - } - - @Override - @Deprecated - public void setSupportProgress(int progress) { - super.setSupportProgress(progress); - } - - @Override - @Deprecated - public void setSupportProgressBarIndeterminate(boolean indeterminate) { - super.setSupportProgressBarIndeterminate(indeterminate); - } - - @Override - @Deprecated - public void setSupportProgressBarIndeterminateVisibility(boolean visible) { - super.setSupportProgressBarIndeterminateVisibility(visible); - } - - @Override - @Deprecated - public void setSupportProgressBarVisibility(boolean visible) { - super.setSupportProgressBarVisibility(visible); - } - - @Override - public void setTheme(@StyleRes int resId) { - super.setTheme(resId); - } - - @Nullable - @Override - public ActionMode startSupportActionMode(@NonNull ActionMode.Callback callback) { - super.startSupportActionMode(callback); - return null; - } - - @Override - public void supportInvalidateOptionsMenu() { - super.supportInvalidateOptionsMenu(); - } - - @Override - public void supportNavigateUpTo(@NonNull Intent upIntent) { - super.supportNavigateUpTo(upIntent); - } - - @Override - public boolean supportRequestWindowFeature(int featureId) { - return super.supportRequestWindowFeature(featureId); - } - - @Override - public boolean supportShouldUpRecreateTask(@NonNull Intent targetIntent) { - return super.supportShouldUpRecreateTask(targetIntent); - } -} - diff --git a/libaes/src/main/java/cc/winboll/studio/libaes/activitys/DrawerFragmentActivity.java b/libaes/src/main/java/cc/winboll/studio/libaes/activitys/DrawerFragmentActivity.java index 5a2cfc7..97610a3 100644 --- a/libaes/src/main/java/cc/winboll/studio/libaes/activitys/DrawerFragmentActivity.java +++ b/libaes/src/main/java/cc/winboll/studio/libaes/activitys/DrawerFragmentActivity.java @@ -5,6 +5,7 @@ package cc.winboll.studio.libaes.activitys; * @Date 2024/06/13 18:58:54 * @Describe 可以加入Fragment的有抽屉的活动窗口抽象类 */ +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -27,14 +28,16 @@ import cc.winboll.studio.libaes.models.AESThemeBean; import cc.winboll.studio.libaes.models.DrawerMenuBean; import cc.winboll.studio.libaes.utils.AESThemeUtil; import cc.winboll.studio.libaes.utils.DevelopUtils; +import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; import cc.winboll.studio.libaes.views.ADrawerMenuListView; import cc.winboll.studio.libaes.views.ADsBannerView; import cc.winboll.studio.libappbase.GlobalApplication; import cc.winboll.studio.libappbase.LogUtils; import com.baoyz.widget.PullRefreshLayout; import java.util.ArrayList; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; -public abstract class DrawerFragmentActivity extends BaseWinBoLLActivity implements AdapterView.OnItemClickListener { +public abstract class DrawerFragmentActivity extends AppCompatActivity implements IWinBoLLActivity, AdapterView.OnItemClickListener { public static final String TAG = "DrawerFragmentActivity"; @@ -61,15 +64,20 @@ public abstract class DrawerFragmentActivity extends BaseWinBoLLActivity impleme @Override protected void onCreate(Bundle savedInstanceState) { - //mContext = this; -// mThemeType = getThemeType(); -// setThemeStyle(); + mThemeType = AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext())); + setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext())); super.onCreate(savedInstanceState); + WinBoLLActivityManager.getInstance().add(this); mActivityType = initActivityType(); initRootView(); LogUtils.d(TAG, "onCreate end."); } + @Override + public Activity getActivity() { + return this; + } + @Override public String getTag() { return TAG; @@ -77,6 +85,7 @@ public abstract class DrawerFragmentActivity extends BaseWinBoLLActivity impleme @Override protected void onDestroy() { + WinBoLLActivityManager.getInstance().registeRemove(this); super.onDestroy(); // 修复:释放广告资源,避免内存泄漏 ADsBannerView adsBannerView = findViewById(R.id.adsbanner);