本文来自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任务
核心思想,就是把任务写入文件,或者写入服务器,通过本地轮循的方式,来操作即将触发的任务;从整个系统来考虑,所有的功能都是用文件来实现的,再加上驱动和触屏,所以文件是编程的基础,存在这里,外加服务端备份,是处理棘手问题的利器。

答CsdnBlogger问-关于定时和后台服务问题的更多相关文章

  1. 答CsdnBlogger问-关于职业发展和团队管理问题

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 问1:关于职业发展以及团队管理?(正能同學_) 请问在二线城市的小公司里,普通Android开发者的 ...

  2. 答CsdnBlogger问-关于安卓入行和开发问题

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 问1:请问大牛对功能和框架的认识有哪些?(提问者:执笔记忆的空白) 比如对于一个小公司来说,什么样的 ...

  3. 答CsdnBlogger问-关于VR取代安卓的问题

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 安卓未来的发展和命运几何? 现在VR和AR各种火爆,是否安卓能够在洪流中屹立不倒呢? 你好,其实这个 ...

  4. 服务 IntentService 前台服务 定时后台服务

    Activity public class MainActivity extends ListActivity {     private int intentNumber = 0;     @Ove ...

  5. Android Services (后台服务)

    一.简介 服务是可以在后台执行长时间运行的应用程序组件,它不提供用户界面. 另一个应用程序组件可以启动一个服务,并且即使用户切换到另一个应用程序,它仍然在后台运行. 另外,组件可以绑定到一个服务来与它 ...

  6. .NET Core 中的通用主机和后台服务

    简介 我们在做项目的时候, 往往要处理一些后台的任务. 一般是两种, 一种是不停的运行,比如消息队列的消费者.另一种是定时任务. 在.NET Framework + Windows环境里, 我们一般会 ...

  7. SNF快速开发平台MVC-EasyUI3.9之-WebApi和MVC-controller层接收的json字符串的取值方法和调用后台服务方法

    最近项目组很多人问我,从前台页面传到后台controller控制层或者WebApi 时如何取值和运算操作. 今天就都大家一个在框架内一个取值技巧 前台JS调用代码: 1.下面是选中一行数据后右键点击时 ...

  8. C++后台服务如何高效实现多个定时器任务

    大部分云端的后台服务,经常会使用到定时器功能来检测一些状态值的变化,且当定时器较多时,就需要设计统一的定时器管理模块来维护所有的定时器资源.然而要设计性能良好的定时器和管理模块,是需要一定的经验和技巧 ...

  9. nodejs 从helloworld到高质量的后台服务server的一点思考

    ---恢复内容开始--- 新公司用的nodejs作为app和网站的后台服务server,所以最近对nodejs一直在学习,加上之前简单的学习了一点,看了两天后台接口源码,所以就直接上手干活了,下面是我 ...

随机推荐

  1. Windows 7下搭建Jmeter测试环境

    jmeter配置.安装 一. 工具描述 apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.设计jmeter的初衷是测试web应用,后 ...

  2. sql 遍历结果print和表格形式

    select * from tb_province --省 pID pName1 北京市2 天津市3 上海市4 重庆市5 河北省6 山西省....... select * from tb_city - ...

  3. POJ 2955 (区间DP)

    题目链接: http://poj.org/problem?id=2955 题目大意:括号匹配.对称的括号匹配数量+2.问最大匹配数. 解题思路: 看起来像个区间问题. DP边界:无.区间间隔为0时,默 ...

  4. topcoder SRM 593 DIV2 WolfDelaymaster

    #include <iostream> #include <string> #include <algorithm> using namespace std; cl ...

  5. 【BZOJ】1601: [Usaco2008 Oct]灌水(kruskal)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1601 很水的题,但是一开始我看成最短路了T_T 果断错. 我们想,要求连通,对,连通!连通的价值最小 ...

  6. 【POJ】3255 Roadblocks(次短路+spfa)

    http://poj.org/problem?id=3255 同匈牙利游戏. 但是我发现了一个致命bug. 就是在匈牙利那篇,应该dis2单独if,而不是else if,因为dis2和dis1相对独立 ...

  7. 参考XML操作类

    转载参考地址: http://blog.csdn.net/happy09li/article/details/7460521

  8. 在myql sqlserver里边怎么快速找到带有关键字的表

    sql server 全部库: ),) set @id=(select count(*) from master..sysdatabases) drop table #t create table # ...

  9. PowerShell - Read an Excel file using COM Interface

    http://www.lazywinadmin.com/2014/03/powershell-read-excel-file-using-com.html

  10. PAT天梯赛练习题 L3-011. 直捣黄龙(多关键字SPFA+DFS)

    L3-011. 直捣黄龙 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题是一部战争大片 —— 你需要从己方大本营出发,一路 ...