0

ステップベースのゲームを作成しているので、進むボタンと戻るボタンを作成できる必要があります。

各ステップにはIDがあり、その情報はSQLiteデータベースから取得されます。maxLevel最大到達ステップとcurrentStep現在のステップを共有設定に保存します。今、私は、メモリをあまり詰まらせることなく、誰かを次の/前のステップに導く新しいアクションをどのように開始するのか疑問に思いました。新しいアクションを開始して、次のようなデータを渡すことができることを知っています。

final Context mContext=this;
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                        SharedPreferences.Editor editor = settings.edit();
                        editor.putInt("count", 2);
                        editor.commit();
                        Intent myIntent = new Intent(mContext, PlayGame.class);
                        mContext.startActivity(myIntent);

ここでの私の主な心配はメモリ使用量です。これを使用して2回進むと、2回戻ってから、もう一度2回進むと、アクティビティのインスタンスが6つ作成されませんか?それは大規模なメモリホッグである可能性があります。

したがって、ここでの質問は次のとおりです。

再起動されてデータベースからデータを取得する、1つのアクティビティを持つフォワード/バックシステムを実装するにはどうすればよいですか?

背景情報の詳細:アクティビティは4つのタブを持つTabHostであり、これらの各タブにはアクティビティが含まれています。各アクティビティは、データベースから必要なデータを取得します。したがって、メモリ使用量についての私の懸念。

編集:

私は解決策を見つけたようです。finish()新しいアクティビティを開始する前に関数を呼び出しています。これはリークを回避するのに役立つはずだと私は信じています。私はこれを考えるのが正しいですか?

4

1 に答える 1

1

ちょっとした考え

AsynTaskなどのUIを更新するバックグラウンドスレッドを実行するのはどうですか。back and forwardメソッドは、UIを更新し、SQLからのデータも更新できるバックグラウンドスレッドをトリガーします。これにより、アクティビティを変更する必要はありません。

便利なリンク、

http://developer.android.com/resources/articles/painless-threading.html

http://topandroid.net/threads-handlers-asynctask

ハッピーコーディング!

エディションの後、

2番目のアクティビティのデータ構造がこれと異なる場合は、とにかく新しいオブジェクトを作成するため、finish()を実行することをお勧めします。ただし、データ構造がおそらく同じオブジェクトを使用するよりも同じであり、それらの値を更新する場合は、より効率的です。

もう1つのエディション、バックグラウンドスレッドから変数を更新した後、UIのビューでsetメソッドを呼び出して、最近の変更を表示する必要がある場合があります。これは論理的ですが、共有したかっただけです:)

楽しみ!

于 2011-05-28T04:24:02.143 に答える