我目前正在重写ViewModel.onCleared()
以清理我的ViewModel,以防止任何泄漏(在这种情况下,从应用程序的内部存储中删除所有未使用的文件)。
[当ViewModel的活动显式完成但由于在终止应用程序时onDestroy()
不会被调用,而没有调用onCleared()
时,这完全正常。
(目前,我的意图是不保存任何数据,我只是不希望任何数据泄漏,无论是在系统杀死我的进程还是在用户杀死它的时候。
[我知道我可以使用Activity.onSaveInstanceState()
或ViewModel's Saved State保存状态,但是由于我真的不想保存数据,特别是由于最后一个似乎不容易与Dagger集成,因此两者似乎都有些过分。此外,这仅在系统终止进程时有用,而在用户终止应用程序时则无济于事,因为那时实例状态将永远不会恢复。
是否有保持干净状态的有效方法?
如果我对您的理解正确,活动中断时是否需要保存一些数据?如果是这样,则实现此目标的最佳方法是onSaveInstanceState()。在ViewModel中,保留组成屏幕所需的所有数据非常方便。它们将在旋转屏幕时生效,但在应用程序被系统终止时将消失。