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

最近在做毕设,要开发个简单的物联网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,结束,今天的坑记录总结完毕。

最近在做毕设,要开发个简单的物联网APP,第一次开发APP,需要接收单片机发来的温湿度数据,连接TCP后发现在手机息屏三分钟左右之后应用就会被杀掉,TCP断开,无法不间断的显示数据。上网查发现有两种方法:1,设置应用为前台服务,但会有通知栏2,电源管理,暴力使CPU不休眠2不到万不得已还是不愿意使用(耗电快),最后选择了1.主要参考了这几篇博客:创建服务类代码1创建服务类代码2AP... class Socket Service : Service () { private var webSockethandler: WebSocketHandler? = null private var pushObserve: Observer<String>? = null private var taskLog: Int = 0 private va.
1. 服务 是什么( Service ) Service 是一种可在 后台 执行长时间运行操作而不提供界面的 应用 组件。 服务 可由其他 应用 组件启动,而且即使用户切换到其他 应用 服务 仍将在 后台 继续运行。此外,组件可通过绑定到 服务 与之进行交互,甚至是执行 进程 间通信 (IPC)。例如, 服务 可在 后台 处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序进行交互。 2. 前台 服务 ( Foreground Service )是什么? 前台 服务 执行一些用户能注意到的操作。例如,音频 应用 会使用 前台 服务 来播放音频曲目。 前台 服务 必须显示通知
Foreground Service 前台 服务 介绍 前台 服务 模拟播放器 前台 服务 发送通知 介绍 前台 服务 前台 服务 是那些被认为用户知道(用户所认可的)且在系统内存不足的时候不允许系统 死的 服务 前台 服务 必须给状态栏提供一个通知,它被放到正在运行(Ongoing)标题之下——这就意味着通知只有在这个 服务 被终止或从 前台 主动移除通知后才能被解除。 模拟播放器 前台 服务 发送通知 1、首先创建一个 服务 并发送通知 pu...
Intent Service 具有以下特点: (1) Intent Service 自带一个工作线程,当我们的 Service 需要做一些可能会阻塞主线程的工作的时候可以考虑使用Intent Service 。 (2) 我们需要将要做的实际工作放入到Intent Service 的onHandleIntent回到方法中,当我们通过start Service (intent)启动了Int...
一、如何保活 后台 服务 Android Service s ( 后台 服务 )里面,我们了解了 Android 四大组件之一的 Service ,知道如何使用 后台 服务 进行来完成一些特定的任务。但是 后台 服务 在系统内存不足的时候,可能会被系统 死。那么如何让 后台 服务 尽量不被 死呢?基本的解决思路主要有以下几种: 1. 提高 Service 的优先级: <!-- 为 防止 Service 被系统回收,可以尝试通过提高 服务 的优先级解决,1000是最高优先级,数字越小,优先级越低 --> android :priori.
start方式启动:onCreate() → onStartCommand() → stop Service → onDestroy() bind方式启动:onCreate() → onBind() → unbind Service → onUnbind() → onDestroy() 运行方式(优先级) 前台 Service :会在通知栏显示通知,优先级较高;anr超时时间为20s 后台 Servi