移除启动页的主服务管理

This commit is contained in:
2025-12-13 11:13:45 +08:00
parent 8fe7444065
commit a1a337558e
2 changed files with 12 additions and 74 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Fri Dec 12 17:21:18 GMT 2025 #Sat Dec 13 03:05:50 GMT 2025
stageCount=1 stageCount=1
libraryProject= libraryProject=
baseVersion=15.12 baseVersion=15.12
publishVersion=15.12.0 publishVersion=15.12.0
buildCount=75 buildCount=78
baseBetaVersion=15.12.1 baseBetaVersion=15.12.1

View File

@@ -11,8 +11,6 @@ import android.graphics.Color;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.telecom.TelecomManager; import android.telecom.TelecomManager;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@@ -32,8 +30,6 @@ import cc.winboll.studio.contacts.dun.Rules;
import cc.winboll.studio.contacts.fragments.CallLogFragment; import cc.winboll.studio.contacts.fragments.CallLogFragment;
import cc.winboll.studio.contacts.fragments.ContactsFragment; import cc.winboll.studio.contacts.fragments.ContactsFragment;
import cc.winboll.studio.contacts.fragments.LogFragment; import cc.winboll.studio.contacts.fragments.LogFragment;
import cc.winboll.studio.contacts.model.MainServiceBean;
import cc.winboll.studio.contacts.services.MainService;
import cc.winboll.studio.contacts.utils.PermissionUtils; import cc.winboll.studio.contacts.utils.PermissionUtils;
import cc.winboll.studio.contacts.views.DunTemperatureView; import cc.winboll.studio.contacts.views.DunTemperatureView;
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
@@ -48,7 +44,7 @@ import java.util.List;
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com> * @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
* @Date 2025/08/30 14:32 * @Date 2025/08/30 14:32
* @Describe Contacts 主窗口(完全适配 API 30 + Java 7 语法) * @Describe Contacts 主窗口(完全适配 API 30 + Java 7 语法)
* 核心优化1. 移除电话状态监听 2. 移除通话筛选服务 3. 移除 MainService 绑定 4. 保留原有页面结构 * 核心优化1. 移除电话状态监听 2. 移除通话筛选服务 3. 移除 MainService 所有相关逻辑 4. 保留原有页面结构
*/ */
public final class MainActivity extends WinBollActivity implements IWinBoLLActivity, ViewPager.OnPageChangeListener, View.OnClickListener { public final class MainActivity extends WinBollActivity implements IWinBoLLActivity, ViewPager.OnPageChangeListener, View.OnClickListener {
@@ -86,7 +82,6 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
private LinearLayout linearLayout; private LinearLayout linearLayout;
// ====================== 5. 业务逻辑成员区 ====================== // ====================== 5. 业务逻辑成员区 ======================
private MainServiceBean mMainServiceBean;
private int currentPoint = 0; private int currentPoint = 0;
private List<Fragment> fragmentList; private List<Fragment> fragmentList;
private List<String> tabTitleList; private List<String> tabTitleList;
@@ -127,13 +122,11 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
mADsBannerView.resumeADs(MainActivity.this); mADsBannerView.resumeADs(MainActivity.this);
LogUtils.d(TAG, "onResume: 广告栏资源已恢复"); LogUtils.d(TAG, "onResume: 广告栏资源已恢复");
} }
// 移除 MainService 绑定逻辑
} }
@Override @Override
protected void onPause() { protected void onPause() {
super.onPause(); super.onPause();
// 移除 MainService 解绑逻辑
} }
@Override @Override
@@ -145,8 +138,6 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
mADsBannerView.releaseAdResources(); mADsBannerView.releaseAdResources();
LogUtils.d(TAG, "onDestroy: 广告栏资源已释放"); LogUtils.d(TAG, "onDestroy: 广告栏资源已释放");
} }
// 移除电话状态监听释放逻辑(已删除监听初始化,无需释放)
// 移除 MainService 解绑及状态传递逻辑
LogUtils.d(TAG, "===== onDestroy: 主Activity销毁完成 ====="); LogUtils.d(TAG, "===== onDestroy: 主Activity销毁完成 =====");
} }
@@ -187,7 +178,6 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
case REQUEST_OVERLAY_PERMISSION: case REQUEST_OVERLAY_PERMISSION:
handleOverlayPermissionResult(); handleOverlayPermissionResult();
break; break;
// 移除 通话筛选权限回调REQUEST_CALL_SCREENING_PERMISSION分支
default: default:
LogUtils.w(TAG, "onActivityResult: 未知requestCode=" + requestCode); LogUtils.w(TAG, "onActivityResult: 未知requestCode=" + requestCode);
break; break;
@@ -200,7 +190,6 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
private void handleOverlayPermissionResult() { private void handleOverlayPermissionResult() {
if (PermissionUtils.isOverlayPermissionGranted(this)) { if (PermissionUtils.isOverlayPermissionGranted(this)) {
LogUtils.d(TAG, "handleOverlayPermissionResult: 悬浮窗权限申请成功"); LogUtils.d(TAG, "handleOverlayPermissionResult: 悬浮窗权限申请成功");
// 移除 通话筛选权限检查(直接完成权限流程)
LogUtils.d(TAG, "handleOverlayPermissionResult: 所有权限已授予"); LogUtils.d(TAG, "handleOverlayPermissionResult: 所有权限已授予");
initUIAndLogic(null); initUIAndLogic(null);
} else { } else {
@@ -210,7 +199,7 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
} }
/** /**
* 检查并申请剩余权限(仅保留悬浮窗,移除通话筛选权限 * 检查并申请剩余权限(仅保留悬浮窗)
*/ */
private void checkAndRequestRemainingPermissions() { private void checkAndRequestRemainingPermissions() {
if (!PermissionUtils.isOverlayPermissionGranted(this)) { if (!PermissionUtils.isOverlayPermissionGranted(this)) {
@@ -280,12 +269,6 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
mADsBannerView = (ADsBannerView) findViewById(R.id.adsbanner); mADsBannerView = (ADsBannerView) findViewById(R.id.adsbanner);
LogUtils.d(TAG, "initUIAndLogic: 广告栏控件初始化完成"); LogUtils.d(TAG, "initUIAndLogic: 广告栏控件初始化完成");
// 4. 主服务初始化(保留启动逻辑,移除绑定相关)
initMainService();
LogUtils.d(TAG, "initUIAndLogic: 主服务初始化完成");
// 5. 移除 电话状态监听初始化逻辑initPhoneStateListener() 调用删除)
// 左边盾值视图初始化Java7分步写法禁止链式调用 // 左边盾值视图初始化Java7分步写法禁止链式调用
DunTemperatureView tempViewLeft = (DunTemperatureView) findViewById(R.id.dun_temp_view_left); DunTemperatureView tempViewLeft = (DunTemperatureView) findViewById(R.id.dun_temp_view_left);
tempViewLeft.setMaxValue(Rules.getInstance(this).getSettingsModel().getDunTotalCount()); tempViewLeft.setMaxValue(Rules.getInstance(this).getSettingsModel().getDunTotalCount());
@@ -298,22 +281,16 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
positions[0] = 0.0f; positions[0] = 0.0f;
positions[1] = 1.0f; positions[1] = 1.0f;
tempViewLeft.setGradientColors(customColors, positions); tempViewLeft.setGradientColors(customColors, positions);
// 文本放在温度条右侧(默认,可省略) // 文本放在温度条右侧(默认,可省略)
tempViewLeft.setTextPosition(true); tempViewLeft.setTextPosition(true);
// 右边盾值视图初始化Java7分步写法禁止链式调用 // 右边盾值视图初始化Java7分步写法禁止链式调用
DunTemperatureView tempViewRight = (DunTemperatureView) findViewById(R.id.dun_temp_view_right); DunTemperatureView tempViewRight = (DunTemperatureView) findViewById(R.id.dun_temp_view_right);
tempViewRight.setMaxValue(Rules.getInstance(this).getSettingsModel().getDunTotalCount()); tempViewRight.setMaxValue(Rules.getInstance(this).getSettingsModel().getDunTotalCount());
tempViewRight.setCurrentValue(Rules.getInstance(this).getSettingsModel().getDunCurrentCount()); tempViewRight.setCurrentValue(Rules.getInstance(this).getSettingsModel().getDunCurrentCount());
// int[] customColors = new int[2];
// customColors[0] = Color.parseColor("#FF3366FF");
// customColors[1] = Color.parseColor("#FF9900CC");
// float[] positions = new float[2];
// positions[0] = 0.0f;
// positions[1] = 1.0f;
tempViewRight.setGradientColors(customColors, positions); tempViewRight.setGradientColors(customColors, positions);
// 文本放在温度条左侧 // 文本放在温度条左侧
tempViewRight.setTextPosition(false); tempViewRight.setTextPosition(false);
LogUtils.d(TAG, "initUIAndLogic: 盾值视图初始化完成"); LogUtils.d(TAG, "initUIAndLogic: 盾值视图初始化完成");
LogUtils.d(TAG, "===== initUIAndLogic: 初始化流程全部结束 ====="); LogUtils.d(TAG, "===== initUIAndLogic: 初始化流程全部结束 =====");
} }
@@ -343,38 +320,7 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
LogUtils.d(TAG, "initViewPagerAndTabs: ViewPager初始化完成Fragment数量=" + fragmentList.size()); LogUtils.d(TAG, "initViewPagerAndTabs: ViewPager初始化完成Fragment数量=" + fragmentList.size());
} }
/** // ====================== 10. 菜单相关函数区 ======================
* 初始化主服务(保留启动逻辑,移除绑定相关;优化启动方式为静态方法)
*/
private void initMainService() {
LogUtils.d(TAG, "initMainService: 开始初始化主服务配置");
mMainServiceBean = MainServiceBean.loadBean(this, MainServiceBean.class);
if (mMainServiceBean == null) {
LogUtils.d(TAG, "initMainService: 服务配置Bean不存在创建新实例");
mMainServiceBean = new MainServiceBean();
MainServiceBean.saveBean(this, mMainServiceBean);
}
// 检查服务状态并启动(使用静态方法,无绑定依赖)
if (mMainServiceBean.isEnable() && !isServiceRunning(MainService.class)) {
LogUtils.d(TAG, "initMainService: 主服务已启用且未运行延迟1秒启动");
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
MainService.startMainServiceAndSaveStatus(MainActivity.this);
LogUtils.d(TAG, "initMainService: 主服务启动任务执行");
}
}, 1000);
} else {
String status = mMainServiceBean.isEnable() ? "已启用但运行中" : "未启用";
LogUtils.d(TAG, "initMainService: 主服务" + status + ",跳过启动流程");
}
}
// ====================== 10. 移除 MainService 绑定/解绑工具方法bindMainService/unbindMainService 完全删除) ======================
// ====================== 11. 菜单相关函数区 ======================
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu); getMenuInflater().inflate(R.menu.toolbar_main, menu);
@@ -392,7 +338,7 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
// ====================== 12. ViewPager页面回调区 ====================== // ====================== 11. ViewPager页面回调区 ======================
@Override @Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@@ -408,7 +354,7 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
@Override @Override
public void onClick(View v) {} public void onClick(View v) {}
// ====================== 13. 工具函数区 ====================== // ====================== 12. 工具函数区 ======================
/** /**
* 拨号工具方法(添加空指针防护) * 拨号工具方法(添加空指针防护)
*/ */
@@ -472,11 +418,7 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
return false; return false;
} }
// ====================== 14. 内部类定义区Java 7 规范禁止Lambda ====================== // ====================== 13. 内部类定义区Java 7 规范禁止Lambda ======================
/**
* 移除 MainServiceConnection 内部类(服务绑定相关,已删除绑定逻辑)
*/
/** /**
* ViewPager适配器静态内部类减少内存泄漏风险Java7泛型完整声明 * ViewPager适配器静态内部类减少内存泄漏风险Java7泛型完整声明
*/ */
@@ -506,9 +448,5 @@ public final class MainActivity extends WinBollActivity implements IWinBoLLActiv
return tabTitleList.get(position); return tabTitleList.get(position);
} }
} }
/**
* 移除 MyPhoneStateListener 内部类(电话状态监听相关,已删除监听逻辑)
*/
} }