ゲームの私の使用例は次のようになります: 私は LoadingActivity を持っています。これは (AsyncTask によって読み込まれますが、これは問題ではありません)、ゲームに必要なすべてのグラフィックを静的クラスに格納します。ロードが完了すると、MenuActivity が表示されます。このアクティビティから、LikeBeginActivity などの他のアクティビティを起動できます。
これはマニフェストのスニペットです:
<activity
android:name="my.domain.mygame.LoadingActivity"
android:alwaysRetainTaskState="true"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="my.domain.mygame.MenuActivity"
android:theme="@android:style/Theme.NoTitleBar" >
</activity>
<activity
android:name="my.domain.mygame.LevelBeginActivity"
android:theme="@android:style/Theme.NoTitleBar" >
</activity>
呼び出しは次のようになります。
読み込み中のアクティビティ
public void startMenu()
{
final Intent gameIntent = new Intent(this, MenuActivity.class);
startActivity(gameIntent);
}
メニューアクティビティ
buttonStartNewGame.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
Intent levelIntent = new Intent(MenuActivity.this, LevelBeginActivity.class);
levelIntent.putExtra(IntentConstants.STARTLEVELINDEX, 0);
startActivity(levelIntent);
}
});
厄介な問題は、LevelbeginActivity で HOME を押してランチャーでゲームを再開すると、常に LoadingActivity から開始されるのに、タスク全体がクリアされるのはなぜですか? それは私には意味がありません。それから私は追加することを考えました
android:alwaysRetainTaskState="true"
マニフェストの LoadingActivity に追加しますが、これも役に立ちません。タスク全体が再び開始されるのはなぜですか? LoadingActivity が何度も開始されるとメモリが不足するため、これは非常に問題です。(次の問題は戻るボタンの動作ですが、それは別の問題です)。最後のアクティビティ名を SharedPreferences などとして保存することで、見苦しい読み込み動作をいじることができますが、これよりもきれいな解決策をお勧めします。