添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

最近在做毕设,要开发个简单的物联网APP,第一次开发APP,需要接收单片机发来的温湿度数据,连接TCP后发现在手机息屏三分钟左右之后应用就会被杀掉,TCP断开,无法不间断的显示数据。

上网查发现有两种方法:

1,设置应用为前台服务,但会有通知栏

2,电源管理,暴力使CPU不休眠

2不到万不得已还是不愿意使用(耗电快),最后选择了1.

主要参考了这几篇博客:

创建服务类代码1

创建服务类代码2

API26以上的notification构建方法

从我一个萌新来讲,记录几点注意的地方:

1.服务的创建,参考前两篇博客,有详细代码

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

2.服务的调用,我是在主活动里面调用的,要注意不要隐式调用,好像Android5.0后必须申明Intent对象,不然会报错【Service Intent must be explicit】

3.注意API版本,26(Android8.0)之后启动服务函数变了

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

除了启动函数,通知构建函数也改变了,使用以前的构造器会报下面的错误【Bad notification for startForeground】,修改按照引用的第三篇博客

API26以上的builder改变,新的构造器builder有两个参数,除了之前的context,还加了通知渠道ID

也就是说我引用的前两篇博客中的构造方法要修改一下。

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

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

4.服务申明,需要在AndroidMainfest.xml中申明

第二个exported是说只在这个应用中这样

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

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

5.记得在手机的应用管理中给你的应用 允许通知

…我TM一下午没开通知,程序运行不报错,疯狂打Log, DEBUG,一直找原因为什么不弹通知。最后想到原因的我,哭了。

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

感谢参考到的博主的分享。

OK,结束,今天的坑记录总结完毕。

1、系统结构:一、应用程序层 Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用程序都是用Java语言编写,并且都是可以被开发人员所开发的其他应用程序替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。 用户开发的Android应用程序和Android的核心应用程