当应用程序移动到后台时,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是不是会清除视图中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

当app从后台移动到前台时会触发哪个JS事件

当应用程序处于后台状态时,FCM多次推送通知无法正常工作

Android程序真机调试闪退怎么办

当我离开我的应用程序时如何停止 MediaPlayer,而不是当我移动到另一个 Activity 时(Android Studio)

Android - 清除导航回栈

当应用程序在后台或在本机反应中被杀死时,是不是可以检查用户的移动活动?