gpt4 book ai didi

android - 在 Activity 中使用 SharedPreferences 和/或类变量

转载 作者:行者123 更新时间:2023-11-29 00:49:49 25 4
gpt4 key购买 nike

只是一个随机问题。我现在正在学习一些 Android,在大多数示例中,似乎在每个函数中使用 (cast) findViewById() 请求了很多常见项目(例如按钮、编辑框等) .

将结果存储在 Activity 的成员值中是好是坏?简单示例:

public class MyActivity extends Activity {
private EditText myText;
public void onCreate(blah blah) {
// blah
this.myText = (EditText) findViewById(R.id.mytext);
}
}

并从那里开始使用 myText 字段。我认为这对性能有好处(取决于 findViewById 的内部工作原理,我很确定它已经非常快),但我还没有看到它受到鼓励。此外,这不是我第一次遇到这样的“缓存”导致问题的情况(有一个数据库连接未正确释放的情况,因为我记得 ConnectionManager 或其他东西以那种方式)。

其次,有点相关,如果你想记住 Activity 中跨方法的一些东西(以及稍后,当 Activity 稍后重新启动时),在 SharedPreferences 中同时保留类字段和值是否更明智,或者每次调用 SharedPreferences 来设置/获取需要的值会是更好的解决方案吗? (最好是“更干净,不会显着影响性能”)

最佳答案

这是完全正常的做法,也正是您应该做的。如果您担心内存泄漏、持有引用或其他任何问题,在处理 View 时不要担心这些。

但是,您应该小心持有对其他上下文的引用,因为这可能会导致内存泄漏。这并不意味着你不应该这样做,只是在你这样做的时候要小心。

在 SharedPreferences 中同时保留一个类字段和一个值是否更明智,或者每次调用 SharedPreferences 以在需要的地方设置/获取值是更好的解决方案?

你应该两者都做。当你只需要读取数据时,你应该保留一个成员变量,只要确保当你写入成员变量时,你也改变了共享偏好。

另外,这不是我第一次遇到像这样的“缓存”会导致问题的情况(有一个数据库连接没有正确释放的情况,因为我记得 ConnectionManager 或其他东西那种时尚)。

这就是我首先要说的。这完全取决于您存储的内容。 View 可以很好地存储,上下文可能很危险,数据库连接和注册的监听器可能会导致非常奇怪的错误。这一切都取决于具体情况。

关于android - 在 Activity 中使用 SharedPreferences 和/或类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3824763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com