2

ゲームの私の使用例は次のようになります: 私は 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 などとして保存することで、見苦しい読み込み動作をいじることができますが、これよりもきれいな解決策をお勧めします。

4

2 に答える 2

0

Activitiesシステムがメモリを必要とする場合、Android は破棄されます。onSaveInstanceState()後で手動で再開できるように、アクティビティの状態を確実に保存する必要があります。必要な値SharedPreferencesSQLiteDatabase

于 2014-09-15T19:27:16.633 に答える