当我浏览应用的示例代码时,我多次遇到onsaveInstanceState
方法。我们为什么一般使用它?
答案 0 :(得分:1)
片段和活动等Android组件具有生命周期。出于多种原因,可以停止,启动或完全取出这些组件。 onSaveInstanceState()
和其他此类生命周期回调使您有机会保存用户返回应用程序时要还原的任何应用程序状态。
例如,假设您的应用程序中有一个简单的文本字段。考虑这个工作流程:
在这种情况下,您可能希望保留用户的输入,这样他们就不必再次输入。这是组件保存的实例状态的很好用途。
您可能会问“为什么我需要恢复该状态,是不是已经存在?”简短的回答是“这取决于”。如果用户只在短时间内离开了您的应用并且手机有足够的内存,那么您的组件可能仍在内存中,您无需担心。但是,Android操作系统可能需要将您的应用程序从内存中取出,以便为其他应用程序腾出空间。在这种情况下,如果用户返回您的应用程序,您的应用程序将有机会(通过onSaveInstanceState()
和朋友)保留任何状态。
请注意,许多View
已经执行此操作,包括EditText
。但是,您可以想象许多类似的用例,如果用户离开您的应用程序,您需要保存某种应用程序状态。
答案 1 :(得分:0)
当操作系统强制终止活动时使用它(例如:当您的活动在后台并且另一个任务需要资源时)。发生这种情况时,将调用onSaveInstanceState(Bundle outstate),并由您的应用程序添加您想要保存在州外的任何状态数据。
当用户恢复您的活动时,
如果您的Activity在上述场景中终止,则会调用onCreate(Bundle savedInstanceState)
并且savedInstanceState将为非null。然后,您的应用可以从savedInstanceState中获取数据,并将Activity的状态重新生成用户上次看到它时的状态。
基本上在onCreate中,当savedInstanceState为null时,则表示这是您的Activity的“全新”启动。当它为非null时(如果你的应用程序将数据保存在onSaveInstanceState(...)中,则表示需要重新创建Activity状态。
编辑:另外,请在询问前搜索。 What is 'savedInstanceState'?