我正在构建一个类似于游戏的应用程序,并且我一直在阅读有关使用服务在后台,前景,警报等中运行事物的所有不同方法,我有些困惑.
我的应用程序将如下所示(示例):
>用户按下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);
这只是Alarm API的一般示例.您将需要对其进行调整.
最后-请注意:警报无法启动!那就是:如果出于任何原因
用户的设备出现故障,您的所有警报都将丢失.
如果您确实希望自己的应用具有引导启动的能力,则需要注册到
称为RECEIVE_BOOT_COMPLETED(请考虑启动后)的事件,您将在其中重新启动待处理的事件
警报:
//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
}
}
}
希望能帮助到你