只是一个随机质询。我学习了一下Android系统,现在,在大多数例子中,这似乎是一个很多普通物品(如按钮,editboxes等)获得所需的各功能使用(cast) findViewById()内。

时,它认为好或不好的做法,存储在一个活动的成员值的结果呢?简单的例子:

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

和使用会将myText字段从那里。我觉得这是很好的性能(取决于findViewById的内部运作,我确信它已经是非常快的),但我还没有看到它尚未被鼓励。此外,它不会是我第一次遇到的情况是“缓存”这样的事情导致的问题(有地方,因为我记得在时尚ConnectionManager什么的数据库连接不正确释放的情况下)。

其次,有些相关的,如果你要记住你的活动在方法之间的东西(以及后来也当活动以后重新启动),是更明智跟上两个一类领域,在SharedPreferences值,或者将调用SharedPreferences用于设置/获取在那里的需要是一个更好的解决方案的价值每一次? (更好为“清洁器,没有显著影响性能)

有帮助吗?

解决方案

这完全是正常的做法,正是你应该做的事情。如果你担心内存泄漏,或持有引用或什么的,不被关注与意见的时候。

然而,你应该小心抱着其他情况下引用,因为这可能会导致内存泄漏。这并不意味着你不应该这样做,只是要小心,当你这样做。

is it wiser to keep up both a class field and a value in SharedPreferences, or would calling SharedPreferences each time for setting / getting the value where it's needing be a better solution?

您应该两者都做。你应该保持一个成员变量时,你只需要读取数据,只是可以肯定,当你写的成员变量,你也更改共享偏好。

Also, it wouldn't be the first time I encountered a situation where 'caching' something like this leads to problems (had a case where database connections weren't released properly because I remembered a ConnectionManager or something in that fashion).

这是我第一次说。这一切都取决于你要存储什么。视图是细到店,上下文可能是危险的,并且数据库连接和注册听众可能会导致真正的莫名其妙的错误。这一切都依赖于特定情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top