2011-06-30 8 views
0

リスト・アダプターをクラス・メンバーとして自分のアクティビティーに保管すると便利です。これは、データを更新するときにそのメソッドで「無効化」メソッドを呼び出すことができ、リストが更新されるためです。アダプターをアクティビティー・クラス・メンバーとしてリストする

アクティビティの状態をシリアル化/メモリから移動して戻すときに、このアプローチはどのように機能しますか?アプリケーションの動作を良好にするためにonRestoreInstanceStateでアダプタを再構築する必要がありますか?

もちろん、データをクラスメンバとして保持し、アクティビティの状態のシリアル化/逆シリアル化に関するデータからアダプタを再構築できます。

また、ListViewをクラスメンバーとして保持し、データを変更するときにgetAdapter()。notifyを使用することもできます。

誰もこの問題に関して「ベストプラクティス」の方向に私を指摘できますか?

答えて

0

私は彼らが復元されると信じています。私は多くのプロジェクトで同じことを使ってきましたが、問題はありませんでした。 UIオブジェクトに同じことをして、漏れたメモリで終わらないように注意する必要があります。

+0

あなたは、UIオブジェクトをアクティビティクラスのメンバーとして保持していても、Androidアプリケーションでメモリがリークする可能性がありますが、アダプタはうまくいくはずです。 –

+0

はい。ボタンを参照してメンバーを保持しているとします。デバイスの向きが変更されると、UI全体が破棄されて再描画されます(onCreateが再び呼び出されます)。ボタンがまだ参照されているため、ボタンは破棄されません。または、あるオブジェクトのコンストラクタにActivityを引数として渡し、そのオブジェクトがそのアクティビティより長く生きているとします。そのオブジェクトが最初に収集されるまで、アクティビティは収集されません(使用を停止してデバイスのメモリが不足しても)。 –

関連する問題