栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android-在Fragment类中保存成员字段的值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android-在Fragment类中保存成员字段的值

您已假设

Fragment
只要该应用程序仍在运行,该实例将一直存在。这是一个合理的假设,如果这个假设是正确的,那么您的方法将会很好地工作。

不幸的是,

Fragment
当a
退回到后台时会被销毁,而在返回到前景时会重新创建。这就是为什么它看起来“刷新”的原因。并非如此
Activity
。当
Activity
后退到后台时,不会立即销毁它。而是将其在当前任务的后堆栈上保留一段时间,如果返回到前台,则它是
同一 实例。

为了解决这个问题,有四种不同的方法:

  • 声明
    FirstTime
    static
    。这 应该 工作。我以前用过。但是,仅在绝对有必要保留成员字段的值的极端情况下,并且仅当没有其他方法可用时,才应使用此方法。生成变量
    static
    会导致经典的内存泄漏。
  • 保存的值
    FirstTime
    在您的
    Fragment
    使用
    onSaveInstanceState()
    @Override

    public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean(“FirstTime”, FirstTime);
    }

并在中检索值

onCreate()

    @Overridepublic void onCreate (Bundle savedInstanceState){    super.onCreate();    FirstTime = savedInstanceState.getBoolean("FirstTime");}
  • 声明

    FirstTime
    一个全局常量类,而不是将其放在
    Fragment

    public class GlobalConstants{public static boolean FirstTime = true;// other global constants ...

    }

并以如下方式访问它

Fragment

    if (GlobalConstants.FirstTime) {    GlobalConstants.FirstTime = false;} else {    //Other stuff here cause it's not true}
  • 将的值保存在
    FirstTime
    SharedPreference
    SharedPreferences sp = getActivity().getPreferences(Context.MODE_PRIVATE);

    SharedPreferences.Editor editor = sp.edit();
    editor.putBoolean(“FirstTime”, FirstTime);
    editor.commit();

并以这种方式获取其值:

    SharedPreferences sp = getActivity().getPreferences(Context.MODE_PRIVATE);FirstTime = sp.getBoolean("FirstTime", true);

前三个方法将

FirstTime
在应用程序运行时保持值。第四种方法将保留
FirstTime
超出应用程序生存期的值,即,当应用程序重新启动时,
FirstTime
将是
true
false
取决于应用程序退出前最后设置的值。

参考文献:

1.
处理片段生命周期

2. 保存键值集

3. 可见性和生命周期

编辑:

要了解使用方法

onSaveInstanceState()
,请参见以下链接:

1. 保存(和检索)Android实例状态

2.
一劳永逸,如何正确保存Fragments的实例状态 。

3. 处理配置更改

令人困惑,但是一旦您理解它就会对您有用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455249.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号