0

おなじみの質問のように見えます。しかし、私は完全な解決策を得ることができなかったので、この質問をしました。

私のアプリケーションでは、30k 文字列のデータを取得し、それを文字列配列に格納しています。このデータを Web サーバーからフェッチするには時間がかかるため、このアクションをバックグラウンドで実行し、それまで UI スレッドでスプラッシュ スクリーンを表示しています。

したがって、この文字列の配列が作成され、に入力されSplashActivity、作成されPublic Staticます。そして、次のように、ListViewActivity という名前の次のアクティビティでこれを使用しています。

SplashActivity.myArrayOfStrings;

ここで問題は、私が入っていListViewActivityi press Home button、3〜5分間放置してアプリArrayIndexOutOfBoundsExceptionを再度開いてみると、SplashActivityの配列アイテムが破棄され、ListViewActivityでその値にアクセスしようとしているためです。

そのため、そのようなデータを保存して、すべてのアクティビティで一度だけフェッチする方法を知っておく必要があります。

毎日 30,000 個の文字列が変更されるため、Shared Preference のようなものは必要ありません。

アプリで SQLite を使用したことはありませんが、SpalshActivity にいるときに文字列をデータベースに保存すると、他のすべてのアクティビティでデータを使用できますか? アプリがバックグラウンドになり、5 分後に再度開いた場合でも、このデータは存在するのでしょうか??

それとも、より良い明白な解決策がありますか??

ありがとうございました

4

1 に答える 1

1

非常に多くのデータを格納するには、SQLite DB で行う必要があります。アクティビティはシステムによって自由にリサイクルされるため、アクティビティ クラス内のデータ ストアが永続的であることに依存しないでください (メモリが少ない場合は、リサイクルされる可能性が高くなります...)。

それどころか、SQLite に保存されたデータは、アクティビティやアプリを閉じても、電話を切っても永続的であると考えられています。

于 2012-08-30T07:40:50.637 に答える