次の方法で共有


Xamarin.Android ListView とアクティビティのライフサイクル

アクティビティは、起動、実行、一時停止、停止など、アプリケーションの実行中に特定の状態を経由します。 詳細および状態遷移の処理に関する具体的なガイドラインについては、「アクティビティのライフサイクル チュートリアル」を参照してください。 アクティビティのライフサイクルを理解し、ListView のコードを適切な箇所に記述することが重要です。

このドキュメント内のすべての例では、アクティビティの OnCreate メソッド内で 'セットアップ タスク' を実行し、(必要に応じて) OnDestroy 内で '破棄' を実行します。 これらの例では通常、変更されない小さなデータセットを使用するため、データを頻繁に再読み込みする必要はありません。

ただし、データが頻繁に変更される、または大量のメモリを消費する場合は、さまざまなライフサイクル メソッドを使用して、ListView を設定および更新するのが適切な場合があります。 たとえば、基になるデータが絶えず変化している (または他のアクティビティでの更新の影響を受けることがある) 場合は、 OnStartOnResume の中でアダプターを作成すると、アクティビティが表示されるたびに最新のデータが確実に表示されます。

アダプターがメモリまたはマネージド カーソルなどのリソースを使用する場合は、補完的なメソッドでそれらのリソースをインスタンス化された場所に解放することを忘れないでください (たとえば、OnStart 内で作成されたオブジェクトは OnStop 内で破棄できます)。

構成の変更

構成 (特にスクリーンの回転とキーボードの可視性) の変更が原因で、現在のアクティビティが破棄されて再作成される場合があることを忘れないでください (ConfigurationChanges 属性を使用して特に指定しない限り)。 つまり、通常の条件下でデバイスを回転させると ListViewAdapter が再作成され、(OnPauseOnResume の中にコードを記述した場合を除いて) スクロール位置と行の選択状態が失われます。

次の属性を使用すると、構成変更の結果としてアクティビティが破棄および再作成されるのを防ぎます。

[Activity(ConfigurationChanges="keyboardHidden|orientation")]

その後、このアクティビティでは、これらの変更に適切に対応するために OnConfigurationChanged をオーバーライドする必要があります。 構成の変更を処理する方法について詳しくはドキュメントを参照してください。