在 Android 中处理暂停/恢复状态
处理暂停和恢复状态通常在 Android 中很棘手,使用 AndEngine 甚至更棘手。您可能希望首先阅读有关使用 android 处理暂停和恢复的一般信息,以便了解 android 在例如来电或用户按下电源按钮时调用了哪些方法。看看这些问答:
现在是 AndEngine 特定的东西。一种方法(我从这里得到)是使用 JSON 序列化状态。@plastic-surgeon 是这样说的:
我找到的解决方案是将引擎的状态序列化为 JSON 并将其保存为共享存储。它的工作量很大,但它确实节省了它。由于andengine会在暂停后重新初始化你的引擎和纹理,所以我认为没有太多选择,除非你想为你的游戏重新编写一些andengine。(你可以)
在我的 JSON 中,我记录了每个精灵的位置类型速度等。保存内容的复杂性取决于游戏的复杂性。然后我为每个类添加了一个反序列化方法,该方法接受 JSON 作为输入。
感谢@plastic-surgeon,我发现了GSON,正如他所说,它是完全无价的。
发布通知
现在,关于您问题的最后一部分,“如果游戏在后台进行中,我希望显示一个持续的通知,”我假设您正在谈论其中之一:
在您掌握了暂停和恢复状态的基本处理后,处理通知。要发出通知,您需要阅读有关在通知区域显示通知的内容。这是一些示例代码,可以让您了解一下:
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("My notification")
.setContentText("Hello World!");
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(this, ResultActivity.class);
// The stack builder object will contain an artificial back stack for the
// started Activity.
// This ensures that navigating backward from the Activity leads out of
// your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(ResultActivity.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
mNotificationManager.notify(mId, mBuilder.build());
您可以在Google 的开发者文档中阅读有关创建和显示通知的更多信息。