Xamarin.Android ListView 和活动生命周期
当应用程序运行时,活动会经历某些状态,例如正在启动、正在运行、已暂停和已停止。 有关处理状态转换的详细信息和具体准则,请参阅活动生命周期教程。
了解活动生命周期并将 ListView
代码放置在正确的位置非常重要。
本文档中的所有示例均在 Activity 的 OnCreate
方法中执行“设置任务”,并(在需要时)在 OnDestroy
中执行“拆卸”。 这些示例通常使用不会更改的小数据集,因此无需更频繁地重新加载数据。
但是,如果数据经常更改或使用大量内存,则可能需要使用不同的生命周期方法来填充和刷新 ListView
。 例如,如果基础数据不断变化(或者可能受到其他活动更新的影响),则在 OnStart
或 OnResume
中创建适配器可以确保每次显示活动时都显示最新数据。
如果适配器使用内存或托管游标等资源,请记得在补充方法中将这些资源释放到实例化的位置(例如,可以在 OnStop
中释放 OnStart
中创建的对象)。
配置更改
请务必记住,配置更改(尤其是屏幕旋转和键盘可见性)可能会导致当前活动被销毁并重新创建(除非使用 ConfigurationChanges
属性另行指定)。 这意味着在正常情况下,旋转设备将导致重新创建 ListView
和 Adapter
,并且(除非在 OnPause
和 OnResume
中编写了代码)滚动位置和行选择状态将会丢失。
以下属性防止活动因配置更改而被破坏和重新创建:
[Activity(ConfigurationChanges="keyboardHidden|orientation")]
然后,活动应重写 OnConfigurationChanged
以适当地响应这些更改。 有关如何处理配置更改的更多详细信息,请参阅文档。