是否在 Android 上使用 Activity 的多个实例?
Whether or not to use multiple instances of an Activity on Android?
如果我有一个应用程序用不同的数据重新填充 ListView 以响应用户选择的项目。我应该开始一个新的 Activity 还是只更改数据,然后调用 Adapter.notifyDataSetChanged()?
似乎调用 notifyDataSetChanged() 更简单,并且可以最大限度地减少我的潜在活动数量(和内存使用量),但我希望 Up/Back 导航正常工作。
我的应用程序像文件资源管理器一样工作,其中有一个文件夹列表,单击文件夹会更改列表以显示新文件夹的内容。如果用户单击文件夹,我希望 Up/Back 按钮将它们带回之前的文件夹。我已使用 activity 的单个实例并使用 notifyDataSetChanged() 实现了此功能,但无法使 Up/Back 按钮按预期工作。我在想我需要以某种方式覆盖那些,或者使用相同 activity 的多个实例。如有任何指示,我们将不胜感激。
谢谢
使用同一个 Activity 的多个实例是非常低效的。
要解决您的问题,最好的方法是使用一个包含多个实例的片段,每个实例代表树状结构中的一个文件夹。然后在 activity 的 onBackPressed()
中,你可以
在 backStack 中有片段时使用 popBackStack(),然后调用 super.onBackPressed()
恢复默认行为。
如果我有一个应用程序用不同的数据重新填充 ListView 以响应用户选择的项目。我应该开始一个新的 Activity 还是只更改数据,然后调用 Adapter.notifyDataSetChanged()?
似乎调用 notifyDataSetChanged() 更简单,并且可以最大限度地减少我的潜在活动数量(和内存使用量),但我希望 Up/Back 导航正常工作。
我的应用程序像文件资源管理器一样工作,其中有一个文件夹列表,单击文件夹会更改列表以显示新文件夹的内容。如果用户单击文件夹,我希望 Up/Back 按钮将它们带回之前的文件夹。我已使用 activity 的单个实例并使用 notifyDataSetChanged() 实现了此功能,但无法使 Up/Back 按钮按预期工作。我在想我需要以某种方式覆盖那些,或者使用相同 activity 的多个实例。如有任何指示,我们将不胜感激。
谢谢
使用同一个 Activity 的多个实例是非常低效的。
要解决您的问题,最好的方法是使用一个包含多个实例的片段,每个实例代表树状结构中的一个文件夹。然后在 activity 的 onBackPressed()
中,你可以
在 backStack 中有片段时使用 popBackStack(),然后调用 super.onBackPressed()
恢复默认行为。