https://blog.csdn.net/agonie201218/article/details/122947261?spm=1001.2014.3001.5501 查考这个
在以前的手机QQ中,手机QQ在线时,直接断网或者强行结束进程,QQ不会掉线,而是会维持在线状态,时间为几小时到几天。
因为服务器没有定时检查QQ是否处于活跃状态,只要QQ不向服务器发送离线请求,服务器就会维持QQ在线状态。
解决方法是服务器每隔一段时间向各个终端发送请求,得到回复后继续在线,否则下线
这个可以做个定时任务或者轮询,比如30秒发个请求,如果没有回应,状态置为离线即可
这个可以用是否有操作进行判断,比如是否进行发送请求啥的,这个可以在后端那边实现,自己定义一个时间距离操作最后一次多久判定为离线
可以考虑做个scoket通信和服务器交互,客户端终止服务器就基本就能实时同步到客户端状态了
进程和服务器之间的通信改为tcp协议的,只要tcp一端断开或者超时了,就默认下线
其他方法不好改造的话,建议给后台反馈一下,让服务器每隔一段时间向终端发送请求,得到回复后继续在线,否则下线
1、后台提供接口,离线调后台接口,进行离线操作
2、用websokect,长连接,离线后台执行离线操作
3、后台记录用户最近活跃时间,超过多久自动离线
安卓和iOS移动端APP在结束进程的时候是有代理的,在代理里面告诉服务器就好了啊
结束进程算是非正常退出,没有主动断开到服务器的连接。后端要显示离线要么等待连接超时时间,要么后端配置探测,5分钟检测一次账户客户端是否在线。
定时检测一下不就行了吗?或者进程被杀之前,像服务器发个数据。题主应该是要代码,但是自己又不给出接口,或者方法的部分代码
其实完全是因为安卓的广播机制。简单来说,当用户安卓某一个程序的时候,系统会像面试官一样吧这个程序的功能记录下来,当用户使用手机时,系统状态的变化会产生各种事件,这些事件需要一些程序来处理的时候,系统会发送广播消息,而这些能处理这件事情的程序会被启用,究竟是用哪一个程序,这个是由系统默认的程序或者由用户选择的程序来处理这个事件的。
当然除了这个原因之外,安卓手机里面还会有一些你不需要的程序也一直启动着,这是因为利益的原因,国内的很多流氓软件都改变了自身程序的优先性,外加了终止其他程序的权限,还有增加守护进程的功能,当检测到“自己人”被干掉了,直接“复活术”让这个程序满血原地复活。而另一些社交类软件则是为了保证能够及时推送消息,也会做出一些优先权的改变。
所以由于以上原因,安卓后台始终都关不掉。其实安卓系统设计的理念就是要淡化用户对后台的管理,手机资源的分配完全交给系统就可以,所以一般这些后台运行的应用不会对手机本身有多大影响,但当运行某个大型的程序的时候就必须要手动去关闭了。既然亲们选择了安卓那就接受它的不完美吧!
或者在这个社区能找到想要的答案,如有帮助,请点击我评论上方【采纳该答案】按钮支持一下,谢谢!soft.zol.com.cn/535/5356572.html
soft.zol.com.cn
true
中关村在线
让APP自动发个请求。服务端接收到就说明在线。没有就是离线