Java Android中的静态字段
我是android和java开发的新手,我想了解一些事情Java Android中的静态字段,java,android,static,Java,Android,Static,我是android和java开发的新手,我想了解一些事情 使用静态字段在服务器之间传输数据是否不好 活动和片段?对我来说,它比使用更容易 临时演员 为什么许多程序在使用构造函数和方法时使用上下文作为参数 可以使用静态字段对应用程序上下文进行单点访问吗? 例如: public class ApplicationLoader extends Application { public static volatile Context context; @Override public v
public class ApplicationLoader extends Application {
public static volatile Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
}
片段
是暂时对象。他们来来去去都是随需应变。对于活动
,框架会在需要时自动创建该活动。您的应用程序可以同时创建同一活动
类的多个实例,具体取决于您设计应用程序的方式以及用户任务/后台堆栈的状态。在这些情况下,静态
跟踪单个上下文
会破坏应用程序中的内容
上下文
对象的性质。这是安卓系统中最令人困惑的事情之一。并非所有的上下文
对象都是相同的。从getApplicationContext()
返回的Context
是应用程序的单例;但是,每个活动
和服务
实例都是上下文
的一个单独实例,是暂时的(见上文)。有关详细说明,请参阅Dave Smith的这篇文章:@google
上下文
。只有当您确切地知道为什么使用应用程序
实例时,才可以使用应用程序
实例。对于这种情况,使用应用程序
实例是正确的上下文
。例如,从应用程序
(例如,通过LayoutInflater
)创建UI通常会得到错误的结果
帮助概述不同类型的上下文的角色
在哪些情况下,android应该使用静态字段
尽可能避免使用它们。在需要的地方尽量少用。请记住,当您的应用程序不在前台时,您的进程可以在任何时候终止,因此,如果您不想丢失数据,静态数据成员需要成为以持久方式存储的数据的缓存
我指的是适配器、列表、上下文等类
假设“列表”的意思是ListView
,那么使用静态数据成员对于这些情况都是不合适的,IMHO.,因为全局状态纯粹是邪恶的。事实上,如果你用谷歌搜索这个短语,第一个链接给出了一个很好的解释。还要注意的是,你永远不应该试图从另一个活动中访问某个活动中的某些内容,而使某个活动中的某些内容处于静态状态可能会导致大量内存泄漏。