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

将数据保留在静态变量中是不好的做法吗?

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

将数据保留在静态变量中是不好的做法吗?

是的,是的。:)

静态场
。过多使用静态字段存在很多问题。它们不仅访问速度较慢,而且容易被Android破坏,而且通常很难在整个地方检查其引用,或者用if(sSomeStatic
== null
){返回新的SomeStatic()}。可以存储对名为(例如)ApplicationData的类的静态引用,您可以在其中存储一些值,嘿,我们时不时需要一些全局变量,但是它是如此容易被滥用,以至于我每次检查新的Android时都会皱眉开发人员的源代码。


是的,将您的Application实例存储在单例模式中并使用它,但不要仅仅因为您可以执行YOURAPP.getInstance()。SomeLazyValueYouAddedHere();就向您的Application实现中添加200个静态字段。

那很不好。这会导致不良做法,并且比在访问硬引用时进行好的设计要慢。

我可以永远继续下去,但是对此有很多讨论(有些很热烈!)。如果您在这里,我假设您是在寻求经验。我在不同的项目中使用Android已有两年了,而我的经验始终是Static(静态)越少越好。

现在是上下文
……哦上下文。永远不要在硬参考中存储上下文。否则您将泄漏内存。一个活动引用了View和许多其他东西。如果存储上下文,则存储的是活动,然后事情就此恶化。学习传递上下文,尽可能使用应用程序上下文,如果需要传递它,则出于非常充分的理由。大多数情况下,App上下文足以获取资源,字符串等。如果要存储Context,请始终存储context.getApplicationContext();。永远不要存储静态活动上下文。您也可以在Google上搜索,而StackOverflow有一些不错的答案。

如果您只能负担一本Android书籍,那么请购买BNR。甚至Android有时也会不时发布新的SDK,这些概念是完全有效的,并且作者使用的模式是处理Activity,Contexts,Fragments等的正确方法。

更新 您的应用程序应如下所示:

public class YourApp extends Application {   private static YourApp sInstance;   public YourApp() {      super();      sInstance = this;   }   public static YourApp getInstance() {      return sInstance;   }}

在那种情况下,是的,您将获得对相同应用上下文的相同静态引用。



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

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

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