Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的静态字段_Java_Android_Static - Fatal编程技术网

Java Android中的静态字段

Java Android中的静态字段,java,android,static,Java,Android,Static,我是android和java开发的新手,我想了解一些事情 使用静态字段在服务器之间传输数据是否不好 活动和片段?对我来说,它比使用更容易 临时演员 为什么许多程序在使用构造函数和方法时使用上下文作为参数 可以使用静态字段对应用程序上下文进行单点访问吗? 例如: public class ApplicationLoader extends Application { public static volatile Context context; @Override public v

我是android和java开发的新手,我想了解一些事情

  • 使用静态字段在服务器之间传输数据是否不好 活动和片段?对我来说,它比使用更容易 临时演员

  • 为什么许多程序在使用构造函数和方法时使用上下文作为参数 可以使用静态字段对应用程序上下文进行单点访问吗? 例如:

    public class ApplicationLoader extends Application {
    public static volatile Context context;
        @Override
        public void onCreate() {
            super.onCreate();
            context = getApplicationContext();
        }
    }
    
  • 那么有人能解释一下,在哪些情况下android应该使用静态字段(我指的是适配器、列表、上下文等类)?当使用非静态字段时,getter/setter,extra-in-intent比静态字段更好吗

  • 这是坏习惯吗
  • 对<代码>活动和
    片段
    是暂时对象。他们来来去去都是随需应变。对于
    活动
    ,框架会在需要时自动创建该活动。您的应用程序可以同时创建同一
    活动
    类的多个实例,具体取决于您设计应用程序的方式以及用户任务/后台堆栈的状态。在这些情况下,
    静态
    跟踪单个
    上下文
    会破坏应用程序中的内容

  • 为什么许多程序使用上下文
  • 这是因为
    上下文
    对象的性质。这是安卓系统中最令人困惑的事情之一。并非所有的
    上下文
    对象都是相同的。从
    getApplicationContext()
    返回的
    Context
    是应用程序的单例;但是,每个
    活动
    服务
    实例都是
    上下文
    的一个单独实例,是暂时的(见上文)。有关详细说明,请参阅Dave Smith的这篇文章:

    @google

  • 静态变量显示意外行为。有时它可以释放内存分配,有时则不能。所以它不可靠 extras将变量存储在bundle中,因此它是可靠的

  • 因为上下文是活动的“基类”
  • 对于static和getter/setter的使用,阅读本文非常重要

    如果有任何问题,请告诉我

    使用静态字段在活动和片段之间传输数据是否不好

    一般来说,是的。使用静态数据成员肯定有Android模式,但对于“传输数据”,它们很少被使用,因为在大多数编程语言中,全局变量被认为是糟糕形式的所有经典原因

    主要的例外情况是,活动在同一个应用程序中,要传递的数据太大,无法放入额外的应用程序,或者数据类型无法放入额外的应用程序。即使如此,使用更灵活的方法也会更好(例如,使用某个对象缓存的静态单例管理器,在其中共享数据,使用附加程序传递ID或密钥以访问缓存)

    对我来说,这比在意图中使用额外功能要容易得多

    您不使用额外功能从活动到片段进行通信,反之亦然。最多,在活动之间传递数据时会使用额外的功能

    除此之外,太多没有经验的开发人员更看重今天的痛苦,而不是“明天所有痛苦的总和”。换句话说,全局变量的使用已经一次又一次地被证明可以降低程序的可维护性。你现在可能不在乎。你的同事关心你。你的老板关心你。当您试图维护今天编写的代码时,您将关心的未来

    什么时候可以使用静态字段对应用程序上下文进行单点访问

    除其他原因外,这通常是错误的
    上下文
    。只有当您确切地知道为什么使用
    应用程序
    实例时,才可以使用
    应用程序
    实例。对于这种情况,使用
    应用程序
    实例是正确的
    上下文
    。例如,从
    应用程序
    (例如,通过
    LayoutInflater
    )创建UI通常会得到错误的结果

    帮助概述不同类型的
    上下文的角色

    在哪些情况下,android应该使用静态字段

    尽可能避免使用它们。在需要的地方尽量少用。请记住,当您的应用程序不在前台时,您的进程可以在任何时候终止,因此,如果您不想丢失数据,静态数据成员需要成为以持久方式存储的数据的缓存

    我指的是适配器、列表、上下文等类


    假设“列表”的意思是
    ListView
    ,那么使用静态数据成员对于这些情况都是不合适的,IMHO.

    ,因为全局状态纯粹是邪恶的。事实上,如果你用谷歌搜索这个短语,第一个链接给出了一个很好的解释。还要注意的是,你永远不应该试图从另一个活动中访问某个活动中的某些内容,而使某个活动中的某些内容处于静态状态可能会导致大量内存泄漏。