0

在我正在开发的 Android 游戏中,游戏在后台被 android 杀死。该游戏是使用 AndEngine 构建的,因此它发生在一个 OpenGL 活动中,该活动使用场景在菜单和游戏之间移动。如果在游戏场景处于活动状态(即用户实际玩游戏)时将游戏移至后台,我希望保持游戏的活力。

  • 我读过一篇关于作为前台服务运行的文章,所以 android 不会杀死它,但是这可能是因为游戏只是一个单一的活动吗?

理想情况下,如果游戏在后台进行中,我希望显示一个正在进行的通知,用户可以单击以将游戏带回前台。(这种行为的一个例子是 GBA Emulator GameBoid)

4

1 回答 1

1

在 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 的开发者文档中阅读有关创建和显示通知的更多信息。

于 2013-02-21T02:00:11.873 回答