关于指尖类mud客户端切换后台频繁掉线问题
mud吧
全部回复
仅看楼主
level 3
3453Hein
楼主
2025年05月12日 14点05分
1
level 3
3453Hein
楼主
现在的指尖类mud客户端都是十多年前开发的了,在android8+开始,普通线程的网络操作容易被在切换后台时被冻结。
2025年05月12日 14点05分
2
level 3
3453Hein
楼主
原本负责mud客户端的mudsocketd是单线程操作
主要通过new_sock 方法构建链接:通过普通线程 new Thread(...) 创建Socket 连接。当应用切换至后台时,系统可能冻结或终止此线程,导致连接中断。
2025年05月12日 14点05分
3
level 3
3453Hein
楼主
解决方案也很简单,使用前台服务(ForegroundService):在后台维持网络连接时,启动一个前台服务并显示通知,告知用户应用正在运行。
2025年05月12日 14点05分
4
level 3
3453Hein
楼主
具体操作如下:
将我发出来的socketService这个类导入到和mudsocketd相同的文件夹main下
在logind负责登录的这个activity类中的安卓生命周期中onResume中加入
// 启动前台服务(保活)
Intent serviceIntent = new Intent(this, SocketService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(serviceIntent);
} else {
startService(serviceIntent);
}
2025年05月12日 14点05分
5
level 3
3453Hein
楼主
如果没有onResume 要创建一个
@Override
protected void onResume() {
super.onResume();
// 启动前台服务(保活)
Intent serviceIntent = new Intent(this, SocketService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(serviceIntent);
} else {
startService(serviceIntent);
}
}
2025年05月12日 14点05分
6
level 3
3453Hein
楼主
在Androidmanifest.xml中加入这段代码
<!-- 声明FOREGROUND_SERVICE权限可以让应用在启动前台服务时获得必要的权限。-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
2025年05月12日 14点05分
7
level 8
贴吧用户_J1NG3WM057
然而我选择自己开发一个app,为啥要在指尖的屎山上重构
2025年05月12日 14点05分
8
3453Hein
你自己开发一个app不也要面临切换到后台掉线的问题吗?
2025年05月12日 16点05分
level 3
3453Hein
楼主
2025年05月12日 14点05分
9
level 3
3453Hein
楼主
再加入一段代码
<service
android:name="com.zwyouto.main.SocketService"
android:enabled="true"
android:exported="false" />
2025年05月12日 14点05分
10
level 3
3453Hein
楼主
2025年05月12日 14点05分
12
level 3
3453Hein
楼主
然后就能解决切换后台时频繁掉线的问题,只要不被安卓系统杀后台,后台切换绝对不会掉线。
2025年05月12日 14点05分
13
level 8
老王😋
2025年05月12日 14点05分
14
level 3
3453Hein
楼主
通过网盘分享的文件:SocketService
链接:
[有效] https://pan.baidu.com/s/1zefGFHda8ktrMwGpOMta0A?pwd=xv3v
提取码: xv3v
附SocketService类文件
2025年05月12日 14点05分
15
level 3
3453Hein
楼主
建议所有能自行开发客户端的开发者都使用我这个框架,亲测能完美解决应用程序切换到后台的掉线问题。
2025年05月12日 16点05分
16
1
2
尾页