服务启动与关闭模块部署基本完成,待调试。。。

This commit is contained in:
2025-12-13 10:53:46 +08:00
parent 61a20f6811
commit 8fe7444065
2 changed files with 21 additions and 7 deletions

View File

@@ -21,13 +21,11 @@ import android.widget.CheckBox;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Toast; import android.widget.Toast;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter; import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import cc.winboll.studio.contacts.activities.SettingsActivity; import cc.winboll.studio.contacts.activities.SettingsActivity;
import cc.winboll.studio.contacts.activities.WinBollActivity; import cc.winboll.studio.contacts.activities.WinBollActivity;
import cc.winboll.studio.contacts.dun.Rules; import cc.winboll.studio.contacts.dun.Rules;
@@ -43,7 +41,6 @@ import cc.winboll.studio.libaes.views.ADsBannerView;
import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.LogView; import cc.winboll.studio.libappbase.LogView;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -34,6 +34,7 @@ import java.util.TimerTask;
* @Date 2025/02/13 06:56:41 * @Date 2025/02/13 06:56:41
* @Describe 拨号主服务,负责核心业务逻辑、守护进程绑定、铃声音量监控及通话监听启动 * @Describe 拨号主服务,负责核心业务逻辑、守护进程绑定、铃声音量监控及通话监听启动
* 严格适配 Android API 30 + Java 7 语法规范 | 解决前台服务启动超时崩溃 * 严格适配 Android API 30 + Java 7 语法规范 | 解决前台服务启动超时崩溃
* 新增:统一在 mainService() 中启动电话监听服务 + 通话筛选服务
*/ */
public class MainService extends Service { public class MainService extends Service {
// ====================== 常量定义区(全硬编码,杜绝高版本 API 依赖) ====================== // ====================== 常量定义区(全硬编码,杜绝高版本 API 依赖) ======================
@@ -299,12 +300,24 @@ public class MainService extends Service {
} }
/** /**
* 启动话监听服务 * 启动话监听服务原有CallListenerService
*/ */
private void startPhoneCallListener() { private void startPhoneCallListener() {
delayStartNonCoreService(CallListenerService.class); delayStartNonCoreService(CallListenerService.class);
} }
/**
* 新增启动通话筛选服务MyCallScreeningServiceAPI 10+ 生效)
*/
private void startCallScreeningService() {
// 通话筛选服务仅 Android 10+API 29+)支持,低版本跳过
if (Build.VERSION.SDK_INT >= ANDROID_10_API) {
delayStartNonCoreService(MyCallScreeningService.class);
} else {
LogUtils.d(TAG, "startCallScreeningService: 系统版本低于 Android 10不支持通话筛选服务跳过启动");
}
}
/** /**
* 检查服务是否正在运行 * 检查服务是否正在运行
*/ */
@@ -404,9 +417,10 @@ public class MainService extends Service {
mMainServiceThread = null; mMainServiceThread = null;
} }
// 7. 强制停止所有子服务 // 7. 强制停止所有子服务(新增:停止通话筛选服务 MyCallScreeningService
stopService(new Intent(this, AssistantService.class)); stopService(new Intent(this, AssistantService.class));
stopService(new Intent(this, CallListenerService.class)); stopService(new Intent(this, CallListenerService.class));
stopService(new Intent(this, MyCallScreeningService.class));
LogUtils.d(TAG, "onDestroy: 所有子服务已强制停止"); LogUtils.d(TAG, "onDestroy: 所有子服务已强制停止");
// 8. 清空静态实例,避免内存泄漏(不改动 Bean 配置) // 8. 清空静态实例,避免内存泄漏(不改动 Bean 配置)
@@ -471,10 +485,13 @@ public class MainService extends Service {
Rules.getInstance(this).loadRules(); Rules.getInstance(this).loadRules();
LogUtils.d(TAG, "mainService: 黑白名单规则已加载"); LogUtils.d(TAG, "mainService: 黑白名单规则已加载");
// 4. 启动电话监听服务 // 4. 启动电话监听服务原有CallListenerService
startPhoneCallListener(); startPhoneCallListener();
// 5. 启动主业务线程 // 5. 新增启动通话筛选服务MyCallScreeningServiceAPI 10+ 生效)
startCallScreeningService();
// 6. 启动主业务线程
mMainServiceThread = MainServiceThread.getInstance(this, mMainServiceHandler); mMainServiceThread = MainServiceThread.getInstance(this, mMainServiceHandler);
mMainServiceThread.start(); mMainServiceThread.start();
LogUtils.i(TAG, "mainService: 核心流程启动完成,主服务正常运行"); LogUtils.i(TAG, "mainService: 核心流程启动完成,主服务正常运行");