0

こんにちは、複数の画面を含む複雑なアプリケーションを開発しています。共通のアクティビティを別のアプリケーション apk ( commonScreen apk) に保持することにしました。これにより、これらを自分自身だけでなくインテントを使用する他のユーザーも使用できるようになります。

ここで、メイン アプリケーションと commonScreen apk に存在するアクティビティ間でデータを保存および共有するための共通の方法が必要です。

Application オブジェクト ( extends Application) にデータを保存することを考えましたが、startActivityForResult(commonScreenApkIntent)、onActivityResult を呼び出すと、Application に存在するデータがなくなっている (null) ことがわかります。それらを使用する問題については、グローバル データをアプリケーションに保存しないでください。

大規模なデータが関係する場合、プリファレンスを使用して各アクティビティのデータを保存および取得することは適切な方法ですか?

注意: 保存したいデータの量はもっと多く、基本的にはアプリケーション ボタンの状態 (無効/有効)、値、および構成です。最大 1000 の値になる場合があります。

データを共有する方法を教えてください。

4

3 に答える 3

3

SQLiteの使用を検討したことがありますか? ContentProvidesはあなたの生活を楽にすることができます

于 2011-02-20T04:05:57.793 に答える
1

アプリのこのデザインを再考することを強くお勧めします。個別の .apk 内のコードは通常、独立して実行できる必要があり、データと密接に結合する必要はありません。これがすべて 1 つのアプリであり、何らかの便宜のために .apk に分割されている場合、他のあらゆる種類の問題を引き起こすことになります。たとえば、ユーザーが .apk の 1 つをアンインストールすると、.それらの1つなど...?

MODE_WORLD_READABLE の使用を検討している場合は、停止して再検討してください。まず、これにより、デバイスにインストールされているアプリケーションがそのデータを読み取ることができるようになります。また、一般的には、アプリ間の依存関係が悪いという設計上の問題を示しています。

于 2011-02-21T05:51:38.217 に答える
0

hackbod の言うことに同意します。
(ダモダランは自分のウェブサイトを宣伝しているだけです。)

あなたの質問「プリファレンスを使用して各アクティビティでデータを保存および取得することは、大きなデータが含まれる場合に適した方法ですか?」あなたのクラス)。
SharedPreferences は、アプリ内にある XML ファイルに結果を保存します。XML を見つけたい場合 1) アプリを実行します。2) DDMS に移動します。 3) 「ファイル エクスプローラー」を使用して、ディレクトリ Data-> data -> パッケージ名 (com.example.whatever) -> shared_prefs に移動します。xml ドキュメントが表示されます。

ストレージ オプションhttp://developer.android.com/guide/topics/data/data-storage.html :
Shared Preferences= プライベート プリミティブ データをキーと値のペアで保存します。
内部ストレージ = デバイスのメモリに個人データを保存します。
外部ストレージ=共有外部ストレージに公開データを保存します。
SQLite データベース = 構造化データをプライベート データベースに保存します。
ネットワーク接続= 独自のネットワーク サーバーを使用して Web 上にデータを保存します。

SQLite を使用してデータを保存することをお勧めします。そうすれば、Google の大規模なデータセンターを使用できます。独自のサーバーがある場合は、ネットワーク接続を使用します。特にローエンドの電話では、外部メモリ (SD カード) は内部メモリ (内部メモリ = 内部ストレージまたは共有設定) よりも多くのスペースを持つ傾向があるため、外部ストレージは私の 3 番目の提案です。たとえば、Samsung Gio があります。内部メモリは181MB。SDカードの容量は約2GB。大きな違い!

「複数の画面」があるためにこれらすべてを行っている場合は、フラグメントを調べる必要があります。フラグメントは、複数の画面サイズ (つまり、電話とタブレット) で 1 つのアプリケーションを制御できるようにするものです。

あなたはそれをすべて逆に持っているように聞こえます。共通のアクティビティには、どのインテントが呼び出されるかを制御する権限が必要です。その逆ではありません。デバイスに基づいて表示されるフラグメントを制御する共通のアクティビティが必要です。次に、個々のフラグメント オブジェクト内で、SQLite を使用して保存された状態を取得できます。

于 2013-02-17T17:27:25.150 に答える