是否需要在Android中初始化上下文两次?

时间:2013-06-27 10:03:41

标签: android android-context

我在很多地方看到android上下文被初始化了两次?为什么需要它?

例如:

Context context;
context = null;

他们会再次将它初始化为onCreate,onReceive或其他方法中的某些值

context = myContext;

如果我们必须将其初始化为值,为什么然后将其初始化为null?

Android的特定内容?

由于

2 个答案:

答案 0 :(得分:2)

  

编译器永远不会为未初始化的局部变量分配默认值。   如果无法初始化声明它的局部变量,请确保分配它   尝试使用它之前的值。将导致访问未初始化的局部变量   在编译时错误。

示例:

someMethod(Context myContext){
  Context context;
  context = null; //Have to be done to avoid compile-time error

  context = myContext;
}

示例2:

private Context context;

someMethod(Context myContext){
  context = myContext;  //No initialization required, because context variable is not local
}

回答你的问题:

  1. 我们正在将变量初始化为 null 以保持一致性

  2. 不,这不是针对Android的,而是针对特定于Java的

答案 1 :(得分:0)

我猜这只是旧习惯。默认情况下,Java应将字段对象引用设置为null。我怀疑Android的处理方式不同。

将它们设置为null甚至可能导致字节代码级别的重复操作。有关详细信息,请参阅this页面。