1

アクティビティの再開時(デバイスの回転)にデータを保存する場合は、すべてのデータをバンドルに保存する必要があることを読みましたsaveInstanceState()

ただし、ビッグデータ構造をバンドルで保存する場合は、システムがフリーズし、メモリ使用量が増加します。

例:
私はHashMap50,000,000の要素を持っています。読み取りはSDカードからです。したがって、保存HashMapするとBundle、デバイスの回転が非常に長い時間フリーズします。

に保存せずにデータを保存できる方法はありBundleますか?HashMap(たとえば、へのポインタを保存しますか?)

4

2 に答える 2

0

あなたは間違いなくこれをすべきではありません。向きの変更を手動で処理するか、サービスのようにこのデータをアクティビティから除外する必要があります。

于 2013-01-16T22:54:45.613 に答える
0

まず第一に、Javaにはポインタはなく、参照のみがあります。唯一HashMapの問題ではありませんが、問題はそれに含まれる50,000,000個の要素を保存することです。本当にこれを実行したい場合は、ファイルからの読み取り/書き込みを最適化できます。これを確認してください。

ただし、これを最適化するべきではありません。ドナルド・クヌースが言ったように:

時期尚早の最適化はすべての悪の根源です。

回転中にそのようなビッグデータを保存およびロードする必要がないように、画面の回転を処理するように記述する必要があります。

于 2013-01-16T23:01:29.753 に答える