1

私はAndroid開発に不慣れで、Webサービスを呼び出し、比較的単純なオブジェクトをハイドレイトする小さなアプリを作成しました(オークションリストなどの規模のものを考えてみてください)。現在、電話が回転してビューがリロードされると、Webサービスが再度呼び出され、オブジェクトが再水和され、リストが再表示されます。これは非常に無駄に思えます。onSaveInstanceStateを介してデータを保存する場合のベストプラクティスは何ですか?オブジェクト自体を保存しても問題ないと見なされますか、それともIDを保存して、毎回新しくロードするプロセス全体を実行するのがベストプラクティスですか。ここで考慮すべき他の経験則や落とし穴はありますか?

ありがとうございました

JP

4

4 に答える 4

2

データベースから情報を再作成することでさえ、通常、Androidの構成変更シナリオでは手間がかかりすぎると見なされます。

使用したいのは、構成の変更後も存続させたいオブジェクトへの参照を保持するクラスを作成し、アクティビティにそれへの参照を持たせることです。また、onRetainNonConfigurationInstance()コールバックでそれを返します。でonCreate()、を呼び出しgetLastNonConfigurationInstance()て、これが構成変更による再作成であるかどうかを確認します。この呼び出しは、必要なすべてのデータを含むオブジェクトを返します。

于 2013-03-06T15:42:36.163 に答える
1

Webサービスを呼び出してリストにデータを入力しているので、リストのデータを保存する必要があると思います(Webサービスの呼び出しには時間がかかり、ユーザーが安定した接続を持っていない場合は失敗する可能性があります)。これはさまざまな方法で実行できます(たとえば、データベース)。このアプローチは、ユーザーがアプリを再起動した場合にも役立ちます。これは、ユーザーがWebサービスが応答するまで待つ必要がないためです。

また、質問をするときは、用語を再検討してください。通常、誰かが物の「水分補給」について話しているのを見ることはありません。人口などについて話すのがより一般的です。

于 2013-03-06T15:32:18.230 に答える
0

向きが変わったときにサービスのリコールを避けたい場合は、アクティビティタグのマニフェストに以下を追加できます。

android:configChanges = "navigation | direction |keyboardHidden"

しかし、@ DigCamaraが言ったように、彼のアプローチは、再起動のような他のシナリオにも最適であり、さらに有用です。

于 2013-03-06T15:42:24.907 に答える
0

データを可能な限りキャッシュします。すべてのデータ接続には、時間、リソース、そして最終的にはバッテリー寿命の点で「標準」のコストがかかります。

リクエストをグループ化してすべてを一度に作成し、可能な限りレスポンスをキャッシュしてみてください。

Android開発者のネットワークについてよく読んでください

于 2013-03-06T15:42:03.310 に答える