安卓-玩具宠物游戏背景服务

4
我正在尝试使用Unity为Android构建一个玩具宠物游戏。这个宠物有一个食物属性,即使游戏关闭也应该下降。
因此,我的方法是构建一个IntentService来保存变量,必要时增加和减少它们。出于电池寿命的考虑,如果应用程序关闭,则每10分钟才使用Alarm Manager启动服务。如果应用程序启动,则会绑定服务,以便它永远不会关闭,我可以获取变量。
有更有效的方法处理这个问题吗?我不想让我的应用程序消耗太多电池。
注:如果食物不足,它还应该显示通知。
2个回答

3

确实有更有效的方法来处理这个问题。

为什么不在用户关闭应用程序时保存时间戳,并在用户再次打开应用程序时计算经过的时间呢? 然后你就可以计算出新的食品属性了。

编辑:如果你想在食品不足时显示通知,你需要使用闹钟管理器。

以下是一些示例代码:

public static void registerAlarm(Context context) {
Intent i = new Intent(context, YOURBROADCASTRECIEVER.class);

PendingIntent sender = PendingIntent.getBroadcast(context,REQUEST_CODE, i, 0);

// We want the alarm to go off 3 seconds from now.
long startTime = SystemClock.elapsedRealtime();
startTime += 60000;//start 1 minute after first register.

// Schedule the alarm!
AlarmManager am = (AlarmManager) context.getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, startTime, 900000, sender); // 15min interval

}

我在这里看到一个问题,根据@raodis想要的功能,也许他想发送有关Tamagochi状态的通知。我的意思是,如果用户例如5小时不玩,Tamagochi将非常饥饿,因此应用程序可以通过警报进行通知。如果roadis想要这样的功能,你的答案将是“无效”的。 :( - Shudy
如果食物不足,它也应该显示通知。抱歉忘记写了。 - roadis
没想到那个。那么你必须使用后台服务和闹钟管理器。 - davidgiga1993
你们中有没有人编写过这样的应用程序,能告诉我它消耗了多少电池电量? - roadis
1
如果您让它每10-15分钟运行一次,它不应该消耗太多电量。为了测量功耗,我建议使用:https://developer.qualcomm.com/mobile-development/increase-app-performance/trepn-plug-eclipse - davidgiga1993

2

您还可以在游戏关闭前计算出Tamagotchi何时会饥饿,并设置闹钟仅在那一点显示通知..除非游戏重新打开,这样您就可以清除所有通知。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接