【Android开发记录】应用设置为前台服务Foreground Service,防止被后台杀进程-by:nixs

最近在做毕设,要开发个简单的物联网APP,第一次开发APP,需要接收单片机发来的温湿度数据,连接TCP后发现在手机息屏三分钟左右之后应用就会被杀掉,TCP断开,无法不间断的显示数据。
上网查发现有两种方法:
1,设置应用为前台服务,但会有通知栏
2,电源管理,暴力使CPU不休眠
2不到万不得已还是不愿意使用(耗电快),最后选择了1.
主要参考了这几篇博客:
创建服务类代码1
创建服务类代码2
API26以上的notification构建方法

从我一个萌新来讲,记录几点注意的地方:
1.服务的创建,参考前两篇博客,有详细代码
在这里插入图片描述

2.服务的调用,我是在主活动里面调用的,要注意不要隐式调用,好像Android5.0后必须申明Intent对象,不然会报错【Service Intent must be explicit】
3.注意API版本,26(Android8.0)之后启动服务函数变了

在这里插入图片描述
除了启动函数,通知构建函数也改变了,使用以前的构造器会报下面的错误【Bad notification for startForeground】,修改按照引用的第三篇博客
API26以上的builder改变,新的构造器builder有两个参数,除了之前的context,还加了通知渠道ID
也就是说我引用的前两篇博客中的构造方法要修改一下。

在这里插入图片描述

在这里插入图片描述
4.服务申明,需要在AndroidMainfest.xml中申明
第二个exported是说只在这个应用中这样
在这里插入图片描述申请权限
在这里插入图片描述

5.记得在手机的应用管理中给你的应用 允许通知
…我TM一下午没开通知,程序运行不报错,疯狂打Log, DEBUG,一直找原因为什么不弹通知。最后想到原因的我,哭了。

经测试,现在手机息屏39分钟后还是保持着TCP连接,仍然可以接受并显示温湿度。

感谢参考到的博主的分享。
OK,结束,今天的坑记录总结完毕。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值