【问题标题】:save the session of an activity even if the app is closed in android即使应用程序在 android 中关闭,也保存活动的会话
【发布时间】:2017-08-03 20:48:05
【问题描述】:

我在 android 中有一个多步骤表单屏幕,用户必须填写他们的用户名等,如果用户跳过该步骤并关闭应用程序并让用户填写用户名字段,我希望不完整的屏幕重新出现只能继续下去了。。

【问题讨论】:

    标签: android session android-activity login


    【解决方案1】:

    关于生命周期活动的研究。

    保存在 SharedPreferences 或 Bundle 中。

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
    }
    

    调用以在被杀死之前从活动中检索每个实例的状态,以便可以在 onCreate(Bundle) 或 onRestoreInstanceState(Bundle) 中恢复状态(此方法填充的 Bundle 将传递给两者)。 这个方法在一个活动可能被杀死之前被调用,这样当它在未来某个时间回来时它可以恢复它的状态。例如,如果活动 B 在活动 A 之前启动,并且在某个时刻活动 A 被杀死以回收资源,活动 A 将有机会通过此方法保存其用户界面的当前状态,以便当用户返回时对于activity A,可以通过onCreate(Bundle) 或onRestoreInstanceState(Bundle) 恢复用户界面的状态。 不要将此方法与活动生命周期回调混淆,例如 onPause(),它总是在活动被放置在后台或销毁的途中调用,或者在销毁之前调用的 onStop()。当用户从活动 B 导航回活动 A 时调用 onPause() 和 onStop() 而不是此方法的一个示例:不需要在 B 上调用 onSaveInstanceState(Bundle),因为该特定实例将永远不会被恢复,因此系统避免调用它。调用 onPause() 而不是 onSaveInstanceState(Bundle) 的示例是,当活动 B 在活动 A 之前启动时:如果活动 A 在 B 的生命周期内没有被杀死,系统可能会避免在活动 A 上调用 onSaveInstanceState(Bundle),因为A 的用户界面状态将保持不变。 默认实现会为您处理大部分 UI 实例状态,方法是在层次结构中具有 id 的每个视图上调用 onSaveInstanceState(),并保存当前聚焦视图的 id(所有这些都由onRestoreInstanceState(Bundle)) 的默认实现。如果您重写此方法以保存每个单独视图未捕获的附加信息,您可能需要调用默认实现,否则请准备好自己保存每个视图的所有状态。 如果调用,此方法将在 onStop() 之前发生。无法保证它会发生在 onPause() 之前还是之后。

    获取保存在 sharedPreferences 或 bundle 中的数据。

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
    }
    

    当活动从先前保存的状态重新初始化时,在 onStart 之后调用此方法,此处在 savedInstanceState 中给出。大多数实现将简单地使用 onCreate 来恢复它们的状态,但有时在完成所有初始化之后在此处执行此操作或允许子类决定是否使用您的默认实现会很方便。此方法的默认实现会恢复以前被 onSaveInstanceState 冻结的任何视图状态。 此方法在 onStart 和 onPostCreate 之间调用。

    【讨论】:

    • 我已将输入字段中的数据存储在共享首选项中,但是当应用程序重新启动时,应用程序应该从用户停止的那一刻恢复,就像在 whatsapp 中一样......
    • 您需要读取保存的数据.. 使用共享首选项 ou 数据库。
    • 我有一个方法可以读取使用共享首选项保存的数据,但是如何在应用重启时必须加载的活动中调用该方法
    • 谢谢..我会试试
    猜你喜欢
    • 2015-01-15
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多