pwtpui 2019-02-14 15:51 采纳率: 0%
浏览 2349

安卓应用开发,应用开启服务在后台运行,息屏一段时间后被关了,找原因和解决方案。

1.描述问题:

 【用于科研,非商业】安卓应用开发,需要保持应用长时间运行获取定位信息,应用开启后启动Activity,然后启动Service,保持Service一直在后台运行。考虑到我们是请一些人帮忙装上应用的,所以主要是想让用户将应用添加到保护名单中,来保证应用正常运行时能够长不被清理掉。
 【功能】Service做的事情包括:监听亮屏息屏、获取加速度传感器数据、调用百度SDK获取定位(由于GPS耗电量大,目前一直仅用wifi、基站等较低功耗的定位方式在测试)、操作SQLite数据库、Service中开启一个Thread每隔20s查询下数据库,数据足够量如10条时发送数据到服务器,handler回调。
 【ps】Service持有了PARTIAL_WAKE_LOCK,CPU电源锁。
 【服务保活】使用了:1.保持前台Notification;2.在手机中添加到加速白名单、应用后台保护,从而防住了锁屏几秒就被清理;3. 1像素保活;
 【设备】华为荣耀7;型号PLK-TL01H;EMUI4.0.3;安卓6.0;运行内存3.0GB;

2.相关代码:

无。

3.报错信息:

无报错,尝试过Crash时记录下信息,然后下次打开时传输到服务器以便查看crash信息,但是发现没有发送。(这个发送crash信息的功能经人为增加int i=1/0;测试过,能够获取到除数不为0的报错信息)

4.尝试过的方法及反馈:

**1.对比测试**:
  1.1 连接电脑,不拔出usb线,一天都不会被退出;
  1.2 拔出usb,应用退到后台,保持亮屏,应用大半天都没被退出;
  1.3 拔出usb,应用退到后台,息屏,应用普遍半小时到两个多小时内,会被退出;
  1.4 尝试过,后台边播放音乐来保活,应用退到后台,息屏,能听到音乐,应用长时间没被退出;

**2.捕获Crash信息:**
  测试并使用了捕获Crash信息然后发送到服务器,发现运行一段时间然后被退出的情况下,不会有crash信息被捕获;

**3.思考OOM:**
  在思考是否因OOM导致内存不足而退出应用,但是似乎不像是这个原因,理由如下:1.没有crash信息;2.连接usb线运行一天也没有发现OOM;3.保持亮屏时长时间也没有被退出;

5.相关截图:

无。

6.提问及思考,求解疑:

Q1.什么原因,会导致应用在连接usb或者直接亮屏时能够持续运行,而息屏后被退出却捕获不到crash信息?
A1:似乎并非OOM,而是被系统清理掉。

Q2:以上表现是否验证了“应用被系统清理掉”的假设?如果是被系统清理掉,那么能导致被系统清理掉的原因有哪些(梳理总结)?
A2:当前觉得,是否是因为耗电量太大,导致应用会运行一段时间后被清理?并且这种清理是添加到内存加速白名单、应用后台保护,后仍然会生效的、能够清掉应用的?
  • 写回答

2条回答 默认 最新

  • 奋进的代码 2019-02-14 16:30
    关注

    1:如果是OOM肯定会有报错信息,告诉你出现了内存泄漏。熄屏后被退出是系统把后台进程给杀死了。
    2:就目前而言,答主自己的手机系统是Android8.0,对于后台运行耗电量巨大的应用,会在通知栏给出警告,引导用户进行清理。你这里是Android6.0系统,答主没有用过,不过应该没有这种提示,后台运行的耗电量巨大的应用会被系统主动清理。
    3:此外,你这里的后台应用做的工作比较多,比如监测手机状态,进行网络传输,内存消耗也很可观,内存占用一定程度后自然会被系统给回收掉。添加内存加速白名单应该会避免因为占用内存被清理掉。
    4:正常情况下,如果一个应用被转到了后台运行,那么一段时间内不来到前台就会面临被清理掉的风险。被清理掉的原因很多,节省电量,节省内存,保证运行速度等。单一添加到白名单效果不会很大。

    评论

报告相同问题?

悬赏问题

  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题