Androidでの一時停止/再開状態の処理
一時停止と再開の状態の処理は、Androidでは一般的にトリッキーであり、AndEngineではさらにトリッキーです。Androidでの一時停止と再開の一般的な処理について読むことから始めたいと思うかもしれません。そのため、たとえば、電話がかかってきたときやユーザーが電源ボタンを押したときに、Androidによってどのメソッドが呼び出されるかがわかります。これらのQ&Aを見てください:
次に、AndEngine固有のものについて説明します。1つのアプローチ(ここから取得)は、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のデベロッパードキュメントをご覧ください。