ViewModel

AndroidFramework层管理UI控制器(Activity/Fragment)的生命周期,它可以决定销毁或者重新创建一个UI控制器,以响应某些用户操作或完全无法控制的设备事件。如果系统销毁或重新创建UI控制器,那么存储在其中的任何与UI相关的临时数据都将丢失。例如,应用程序可能在一个Activity中包含一个用户列表,当由于配置更改导致Activity重新创建时,新的Activity必须重...[ 百科 ]

Android Framework 层管理 UI 控制器(Activity/Fragment)的生命周期,它可以决定销毁或者重新创建一个 UI 控制器,以响应某些用户操作或完全无法控制的设备事件。如果系统销毁或重新创建 UI 控制器,那么存储在其中的任何与 UI 相关的临时数据都将丢失。例如,应用程序可能在一个 Activity 中包含一个用户列表,当由于配置更改导致 Activity 重新创建时,新的 Activity 必须重新获取用户列表。对于简单的数据,Activity 可以使用 onSaveInstanceState() 方法在 onCreate() 中恢复数据,但这种方法只适用于少量的、可以序列化和反序列化的数据,不适用于像用户列表或位图这样的大量数据。

另一个问题是 UI 控制器经常需要异步调用,这可能需要一些时间来返回结果。UI 控制器需要管理这些调用,并确保系统在销毁后清除它们,以避免潜在的内存泄漏。这种管理需要大量的维护,并且在配置改变导致对象重新创建的情况下,会导致浪费的资源,因为对象可能不得不重新做它已经做过的事情。

UI控制器(如 Activity/ Fragment)主要用于显示 UI 数据、响应用户操作或处理操作系统通信(如权限请求)。如果界面控制器也负责从数据库或网络加载数据,就会导致这个类变的臃肿。将过度的责任分配给 UI 控制器可能导致一个单独的类试图处理所有应用程序的工作,而不是将工作委托给其他类,以这种方式将过度的责任分配给UI控制器也会使测试变得更加困难。

从UI控制器逻辑中分离出视图数据所有权,使开发更容易、更高效。


扫码进入手机网页