开发者社区> TravelGrid> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

答CsdnBlogger问-关于定时和后台服务问题

简介:  本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 前段时间写了不少博客,在问答页面也陆续回答几十个问题,之后Csdn乙同学找到我,说要推荐我参加问答类目作答主,解释一些同学的疑惑,本着分享精神,加上多年来一直默默的使用网上大家的贡献,于是写出一部分个人见解,大家仁者见仁,一起讨论,如果能给出更好的方案,那是再好不过的。
+关注继续查看


 本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!


前段时间写了不少博客,在问答页面也陆续回答几十个问题,之后Csdn乙同学找到我,说要推荐我参加问答类目作答主,解释一些同学的疑惑,本着分享精神,加上多年来一直默默的使用网上大家的贡献,于是写出一部分个人见解,大家仁者见仁,一起讨论,如果能给出更好的方案,那是再好不过的。


问1:有关于后台服务的问题?(提问者:qq_26763799

app中有个功能,玩家通过我们app启动另一款应用(大部分是游戏类,所以比较占内存),我们app开启后台服务倒计时计算用户使用时长,当到达规定时间就发放奖励,但是当内存紧张或者回收机制比较霸道的手机上,总会失效,用户经常反应玩了规定时长,还是拿不到奖励,有没有什么能优化的方法或者地方或建议?


答1:

玩家时间,建议使用token+游戏包名+毫秒的方式保存

关于后台倒计时,最霸道的做法,我们可以开一个进程:里面专门运行一个Service来做这个倒计时功能,使用Aidl的方式操作,Service要开放权限给到你的主进程。一个进程比如只有24M,你本进程即使死掉,它依然可以运行,下次进来继续从此进程中读取用户时间。

其次,你可以把发放奖励的玩家时长配置到文件中,然后判断只要应用未关闭就执行倒计时,并叠加写入文件,比如隔2s就写入文件中,即使有所些微差距也是可以的,这样即使下次重启,你也可以提取出上次玩家玩的时间,继续执行倒计时-当然可以存在sd卡、内存卡、数据库、SharePre甚至网络服务器端

最后,如果能把你们耗时的程序打成so包运行,或者放到其他进程运行,把自己的应用内存消耗减至最少,可以使用RxJava的schedule方法操作,
这样给用户奖励的事情,最好将时长写入文件来配置,当然最靠谱的是写入服务端数据库,这样可以有效保护用户的权益,减少对用户权益的损害。



问2:有关于定时提醒的问题?提问者:qq_26763799

应用中某些功能模块需要做到定时提醒功能(类似部落冲突这款游戏建造时间到了自动菜单栏通知提示),用alarmmanager可以做到监听系统时间,到点了发送,但是在某些手机rom下(特别是三星,GC回收有点过分,灭屏就全回收)灭屏或者当前app进程被杀后将收不到提示,有些甚至定时太长也会导致收不到,或者一亮屏就一股脑全部提醒,有没什么好的优化或者保活策略?


答2:

那首先,你可以参加上一个同学的答案:

AlarmManager是个不错的方案,让依托于系统,来实现轮循,是比较靠谱的方式,问题主要在于如何保证自己一直执行,这是一个策略,即保证轮循任务不管怎样能一直执行

实现方式多种多样,这里介绍几种:通过Aidl另启进程、通过Application启动时即开启轮循任务+Demon任务
核心思想,就是把任务写入文件,或者写入服务器,通过本地轮循的方式,来操作即将触发的任务;从整个系统来考虑,所有的功能都是用文件来实现的,再加上驱动和触屏,所以文件是编程的基础,存在这里,外加服务端备份,是处理棘手问题的利器。



以下资料来自个推:

第三方系统管理软件限制收不到推送的消息

需要用户手动操作第三方 ROM 的管理软件

EMUI OS(华为)
  • 自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程不会开启,只能手动开启应用

img_3

  • 后台应用保护:需要手动把应用加到此列表,否则设备进入睡眠后会自动杀掉应用进程,只有手动开启应用才能恢复运行

img_4

  • 通知管理:应用状态有三种:提示、允许、禁止。禁止应用则通知栏不会有任何提醒
Flyme OS(魅族)
  • 自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启

img_4

  • 通知栏推送:关闭应用通知则收到消息不会有任何展示
  • 省电管理: 安全中心里设置省电模式,在【待机耗电管理】中允许应用待机时,保持允许,否则手机休眠或者应用闲置一段时间,无法正常接收消息。

img_4

Funtouch OS(VIVO)
  • 自启动管理:需要将应用加入“i管家”中的【自启动管理】列表,否则重启手机后进程不会自启。但强制手动杀进程,即使加了这个列表中,后续进程也无法自启动。
Color OS(OPPO)
  • 冻结应用管理:需要将应用加入纯净后台,否则锁屏状态下无法及时收到消息
  • 自启动管理:将应用加入【自启动管理】列表的同时,还需要到设置-应用程序-正在运行里锁定应用进程,否则杀进程或者开机后进程不会开启,只能手动开启应用
MIUI OS (小米)
  • 自启动管理:需要把应用加到【自启动管理】列表,否则杀进程或重新开机后进程无法开启

img_3

  • 通知提示设置:应用默认都是显示通知栏通知,如果关闭,则收到通知也不会提示
  • 网络助手:可以手动禁止已安装的第三方程序访问2G/3G和WIFI的网络和设置以后新安装程序是否允许访问2G/3G和WIFI的网络
  • MIUI 7 神隐模式: 允许用户设置后台联网应用,开启后应用即可在后台保持联网,否则应用进入后台时,应用无法正常接收消息。【设置】->【电量和性能】->【神隐模式】

img_4



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Pipenv 中安装 Django
Pipenv 是一个生产流的工具,旨在将最好的打包世界( bundler, composer, npm, cargo, yarn, etc. )带入 Python 世界。它将 Pipfile、pip 和 virtualenv 整合到一个命令中。
12 0
【技术白皮书】第一章:OCR智能文字识别新发展——深度学习的文本信息抽取
什么是基于深度学习的文本信息抽取? **信息抽取 (Information Extraction)** 是把原始数据中包含的信息进行结构化处理,变成表格一样的组织形式。输入信息抽取系统的是原始数据,输出的是固定格式的信息点,即从原始数据当中抽取有用的信息。信息抽取的主要任务是将各种各样的信息点从原始数据中抽取出来。然后以统一的形式集成在一起,方便后序的检索和比较。由于能从自然语言中抽取出信息框架和用户感兴趣的事实信息,无论是在信息检索、问答系统还是在情感分析、文本挖掘中,信息抽取都有广泛应用。随着深度学习在自然语言处理领域的很多方向取得了巨大成功......
87 0
SAP Spartacus 学习资料汇总
SAP Spartacus 学习资料汇总
17 0
SAP Commerce(SAP Hybris)学习资料汇总
SAP Commerce(SAP Hybris)学习资料汇总
32 0
十问科学家 | 关于机器智能,金榕这么说
申请纸质版杂志:https://survey.aliyun.com/apps/zhiliao/xsTiZ4YaM
191 0
关于exp/imp的总结学习
关于exp/imp,是很常用的数据导出导入工具,在10g开始推出的数据泵datapump相当于是exp/imp的补充和升级版本。在后续章节再做一个总结。 exp/imp的使用相对比较简单,通常用做在不同的数据库或者环境之间转移数据,即使数据库位于不同的平台,也可以通过统一的接口来做数据的导入导出工作。
895 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
十分钟上线-使用函数计算构建支付宝小程序服务
立即下载
如何做小程序性能优化
立即下载
面向失败设计
立即下载