我正在构建一个类似游戏的应用程序,我一直在阅读有关在后台,前台,警报等中运行服务的所有不同方法,我有点困惑。
我的应用程序会像这样(示例):
最好的方法是什么?是否有连续运行的服务来打开这些活动,或者每次用户完成其中一项活动时都会设置新的警报?
答案 0 :(得分:4)
请不要创建服务,因为它可以闲置几个小时。这毫无意义。
您需要做的是创建一个警报。类似的东西:
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
}
}
}
希望它有所帮助