当应用程序移动到后台时,android是不是会清除视图中的数据?
Posted
技术标签:
【中文标题】当应用程序移动到后台时,android是不是会清除视图中的数据?【英文标题】:Does android clear data in Views when app moves to background?当应用程序移动到后台时,android是否会清除视图中的数据? 【发布时间】:2019-01-27 09:22:15 【问题描述】:我的应用有以下安全要求:
验证应用在后台运行时是否从视图中删除敏感数据。
我的问题是,android 会在后台删除视图中的数据吗?
根据android documentation,我知道的是:
默认情况下,系统使用 Bundle 实例状态来保存 Activity 布局中每个 View 对象的信息(例如输入到 EditText 小部件中的文本值)。
一种解决方案是我可以清除所有视图,然后使用以下方法保存状态
@Override
public void onSaveInstanceState(Bundle savedInstanceState)
// Save the user's current game state
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState); // Always call the superclass first
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null)
// Restore value of members from saved state
else
// Probably initialize members with default values for a new instance
// ...
但我不知道 Android 操作系统是否会清除视图中的数据。任何帮助将不胜感激。
谢谢
【问题讨论】:
我不认为Android在后台活动时清除视图数据,它只有在重新创建活动时才恢复数据,例如用户旋转手机。 你是如何实现这个要求的? 【参考方案1】:Android 不会在您的应用程序移至后台时自动回收您的视图。
系统在需要释放 RAM 时杀死进程;系统杀死给定进程的可能性取决于当时进程的状态。
如果它决定杀死视图或需要内存,它只会回收视图。或在配置更改时。
用户希望 Activity 的 UI 状态在整个配置更改期间保持不变,例如旋转或切换到多窗口模式。但是,默认情况下,系统会在发生此类配置更改时销毁 Activity,从而清除存储在 Activity 实例中的所有 UI 状态。
总的来说,我认为你的方法是正确的。
如果您愿意,只需使用onStop()
(而不是onPause()
,因为某些对话框和其他交互会从您的活动中移除焦点)来清除您的视图。
【讨论】:
谢谢兄弟..我会去保存状态方法【参考方案2】:看看android的activity生命周期https://developer.android.com/guide/components/activities/activity-lifecycle
确保清除所有数据的一种方法是覆盖 onPause 函数并手动清除数据。当您的应用程序移至后台时调用 onPause。
【讨论】:
【参考方案3】:不,它不会删除数据,因为根据 Android 的生命周期,当您执行视图后台处理时,会调用 onPause() 和 onResume() 并且您的视图及其实例位于 onCreate() 方法中。
因此,通过从后台启动视图,它不会删除您的视图数据。
【讨论】:
以上是关于当应用程序移动到后台时,android是不是会清除视图中的数据?的主要内容,如果未能解决你的问题,请参考以下文章
当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)