我正在构建一个类似游戏的应用程序,并且我一直在阅读有关在后台、前台、警报等中使用服务运行事物的所有不同方法,我有点困惑。
我的应用程序会像这样(示例):
- 用户按下 Main 中的按钮,然后他可以关闭应用程序
- 30 分钟后 Activity1 打开
- 用户完成了该活动中他需要做的任何事情,这
2 小时后触发下一个活动开始
- 2小时后Activity2打开
- 用户也完成了他需要做的任何事情,触发
下一个
- 一天后 Activity3 打开,依此类推
最好的方法是什么?是否有一个持续运行的服务来打开这些活动,或者设置一个新的警报以在每次用户完成其中一项活动时启动?
请不要仅仅因为它可以闲置几个小时而创建服务。这个不成立。
您需要做的是创建警报。就像是:
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 14);
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
这只是一个一般的例子报警接口 http://developer.android.com/reference/android/app/AlarmManager.html。您需要根据您的需要进行调整。
最后 - 请注意:警报无法启动恢复!也就是说:如果出于任何原因
用户的设备出现故障,您的所有警报都将丢失。
如果您确实希望您的应用程序具有启动弹性,您将需要注册
事件称为接收_启动_完成(想想启动后)您将在其中重新启动挂起的
警报:
//manifest:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".MyBootReceiver"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
//java class
public class MyBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
// restart alarms
}
}
}
希望能帮助到你
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)