项目需要在后台获取GPS经纬度。当用户对手机有一段时间没有操作后,屏幕(Screen)将从高亮(Bright)变为暗淡(Dim),如果再过段时间没操作,
屏幕(Screen)将又由暗淡(Dim)变为不显示(Off),如果再过段时间没操作,CPU将sleep,从on变为off.这时服务会被杀死。
输出log:

网络给出很多种解决方法有横竖屏还有输入输出没close,创建太多对象等,但是发现不做任何实质操作只开启一个服务,锁屏后一段时间也会出现上面log。
之后尝试过:
1.休眠后,手机闹钟服务定时触发后台服务无效。
2.长时间休眠后,注册动态广播监听app被移除无效。
3.长时间休眠后,后台服务被销毁时触发重启服务无效,根本没有进入ondestory()方法。
4.WAKE_LOCK无效。
还有就是一个解决办法是开启前台服务但是会一直有通知。最后综合思路是:
1监听用户锁屏。
2.锁屏时打开前台广播,解锁时打开后台广播。
监听用户锁屏时必须是动态注册在manifest中无效。
IntentFilter screenStateFilter = new IntentFilter();screenStateFilter.addAction(Intent.ACTION_SCREEN_ON);screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);registerReceiver(MyBroadCastReciever, screenStateFilter)BroadcastReceiver MyBroadCastReciever = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {Log.i("application", "Screen went OFF");Toast.makeText(context, "screen OFF", Toast.LENGTH_LONG).show();} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {Log.i("application", "Screen went ON");Toast.makeText(context, "screen ON", Toast.LENGTH_LONG).show();}}};

然后就是前台服务就是在service的onStartCommand中加入
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);mBuilder.setPriority(Notification.PRIORITY_MIN);// 设置该通知优先级//  mBuilder.setSmallIcon(R.drawable.gpsblue);Notification notification = mBuilder.build();startForeground(1, notification);

startForeground(1, notification);方法中参数是0,前台服务是无效的;传1是有效的。所以监听锁屏时,锁屏开启服务传1。这样service是前台的一直运行,但是看不到通知。屏幕亮时服务传0,service不容易被杀死。

转载于:https://www.cnblogs.com/andies/p/5893143.html

Android长时间后台运行Service相关推荐

  1. Android长时间后台运行,内存被回收再次打开导致APP崩溃(APP在后台被系统回收后,如何重新启动?)

    问题: 因为手机内存不足的时候,会回收一些APP所占内存,如果被回收的APP中有全局变量,那么再次进入这个APP就会导致异常报错: 原因: 因为Application是全局变量,内存不足的时候会被回收 ...

  2. 实现iOS长时间后台的两种方法:Audiosession和VOIP(转)

    分类: Iphone2013-01-24 14:03 986人阅读 评论(0) 收藏 举报 我们知道iOS开启后台任务后可以获得最多600秒的执行时间,而一些需要在后台下载或者与服务器保持连接的App ...

  3. android 熄屏 后台运行,Android进程保活/息屏后后台保持定位、网络运行

    Android 设备在黑屏的分钟后可能会发生多种情况: 应用程序切后台后进程资源被系统回收,导致不能持续定位. 解决办法: 长连接定时唤醒cpu(解决黑屏定位.黑屏断网问题) 对于原生Android系 ...

  4. android app锁定后台运行的方法

    想直接看图操作,可以android 下一个 小米穿戴 然后 我->开启后台运行权限 ->点击当前手机后面的 里面有 小米MIUI,华为EMUI,OPPO ColorOS ,Vivo Fun ...

  5. Android 8.0后台运行策略学习

    本文主要是对谷歌开发者官方微信公众号发布的[中文教学视频]Android Oreo 中的后台进程等文章的学习记录. 概览 Service限制 前台应用的定义 影响所有后台Service 针对Servi ...

  6. Android 长时间 卡顿,安卓手机用的久了会卡顿?这几点才最有用!

    安卓手机用的久了会卡顿?清理内存的不要相信,这几点才最有用! 相信多数人都用的是安卓手机,大家一致认为安卓手机的通病就是用久了会卡顿,卡顿了之后就喜欢各种清理,清理完了之后好像发现快一点了,其实不然, ...

  7. 笔记本电脑散热器声音很大怎么办_笔记本电脑长时间高温运行有什么危害

    笔记本电脑比台式电脑更加便携,现在市面上的笔记本电脑品牌五花八门,笔记本电脑的价格也不如当初那么高昂,因此大部分学生和上班族也很愿意选购一台自己的笔记本电脑. 笔记本电脑大概可分为轻薄本,商务本和游戏 ...

  8. java何时支持await,内存-为什么Java等待这么长时间才能运行垃圾回收器?

    我注意到图表在下降之前并未严格向上倾斜,但局部变化较小. 尽管我不确定,但是我认为如果没有垃圾回收发生,内存使用不会显示这些小滴. Java中有次要和主要的集合. 次要收藏经常发生,而主要收藏则较为少 ...

  9. Lifelong SLAM 论文解读合集:针对长时间重复运行SLAM地图更新问题

    目录 (ICRA 2016)Towards Lifelong Feature-Based Mapping in Semi-Static Environment 观测与特征的建模 特征的持续性估计 递归 ...

最新文章

  1. Linux期末复习题库(4)
  2. 2021-01-24过去十年十大AI研究热点,分别为深度神经网络、特征抽取、图像分类、目标检测、语义分割、表示学习、生成对抗网络、语义网络、协同过滤和机器翻译。
  3. [资料整理] Decentralized Services Orchestration, Choreography相关的几篇论文
  4. 很高兴加入51cto——交朋友
  5. sqlserver2008未将对象引用设置到对象的实例_面试官:ThreadLocal 的内存泄漏是弱引用导致的,你确定?...
  6. 【caffe-MATLAB】自己编译faster-rcnn的MATLAB版本
  7. 海量数据处理:如何从10亿个数中,找出最大的10000个数?(top K问题)
  8. DancingLinks刷题集
  9. [2021-09-11 CQBZ/HSZX多校联考 T1] 茅山道术 (后缀和优化dp)
  10. 豪!华为放话:3年培养100万AI人才!网友神回应了
  11. POJ-1328 Radar Installation 贪心
  12. MySQL中char、varchar和text的区别
  13. 怎么做好企业网站关键词优化
  14. 支持javascript的ppt软件_14款基于Javascript的数据可视化工具
  15. android 2048小游戏实现代码
  16. K2+Padavan拿下校园网锐捷认证
  17. ios 字符加密问题 字符串加密gyb字符返回空
  18. uniapp h5 腾讯地图根据经纬度显示位置,并打开手机导航
  19. 关于win7下r3窗口进程保护的一些方式
  20. 支付宝 当面付(扫描支付) 对接逻辑

热门文章

  1. java8 sum_Java8的Stream流真香,没体验过的永远不会知道!
  2. Java8collection.sort_Collections.sort()源码分析(基于JAVA8)
  3. 安卓设置原生alert设置圆角_每个月流量都超额?安卓、苹果用户可以尝试更改这些设置...
  4. MACAPP中引入ffmpeg库完成具体功能
  5. mysql存储过程含义,MySQL存储过程定义中的特性(characteristic)的含义
  6. 刷新mac地址命令_常用网络检测命令-必备技术
  7. Android模拟器远程,使用Android模拟器进行远程调试
  8. Java 时间处理 Instant
  9. vue 组件 父向子传值
  10. vue.js 组件基础