我想问一下为什么在Android中调用onDestroy()方法后没有清除静态变量。静态变量是否是“安全”的实现方式,例如实现一些int来保持应用程序的状态,并取决于该值,例如发生某些事情或SharedPrefrences在这种情况下是最好的?
答案 0 :(得分:0)
静态变量不受Android活动生命周期的任何控制。它们是Java语言的一部分,旨在在类的各个实例之间保存值。
也就是说,不建议使用静态变量在Android应用中存储状态信息。共享首选项是一个更好的选择,但是共享首选项存储在磁盘上,因此根据您的情况,它们可能会过于持久。如果您只需要在配置更改中存储活动状态,或者在长时间处于后台状态后恢复活动,则可以使用活动的保存实例状态。请参阅Activity.onSaveInstanceState()和Activity.onRestoreInstanceState()。要在活动之间传递状态数据,可以使用Intent Extras。如果需要在不同的应用程序组件之间共享变量,则可以在应用程序对象中定义变量。您也可以使用ViewModel。实际上,任何东西都比静态变量更合适。