Xamarin.Android ListView 和活动生命周期

当应用程序运行时,活动会经历某些状态,例如正在启动、正在运行、已暂停和已停止。 有关处理状态转换的详细信息和具体准则,请参阅活动生命周期教程。 了解活动生命周期并将 ListView 代码放置在正确的位置非常重要。

本文档中的所有示例均在 Activity 的 OnCreate 方法中执行“设置任务”,并(在需要时)在 OnDestroy 中执行“拆卸”。 这些示例通常使用不会更改的小数据集,因此无需更频繁地重新加载数据。

但是,如果数据经常更改或使用大量内存,则可能需要使用不同的生命周期方法来填充和刷新 ListView。 例如,如果基础数据不断变化(或者可能受到其他活动更新的影响),则在 OnStartOnResume 中创建适配器可以确保每次显示活动时都显示最新数据。

如果适配器使用内存或托管游标等资源,请记得在补充方法中将这些资源释放到实例化的位置(例如,可以在 OnStop 中释放 OnStart 中创建的对象)。

配置更改

请务必记住,配置更改(尤其是屏幕旋转和键盘可见性)可能会导致当前活动被销毁并重新创建(除非使用 ConfigurationChanges 属性另行指定)。 这意味着在正常情况下,旋转设备将导致重新创建 ListViewAdapter,并且(除非在 OnPauseOnResume 中编写了代码)滚动位置和行选择状态将会丢失。

以下属性防止活动因配置更改而被破坏和重新创建:

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

然后,活动应重写 OnConfigurationChanged 以适当地响应这些更改。 有关如何处理配置更改的更多详细信息,请参阅文档。