0

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

例如 :

Context context;
context = null;

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

context = myContext;

如果无论如何我们必须将其初始化为 value,为什么还要将其初始化为 null ?

有什么特定于 Android 的吗?

谢谢

4

2 回答 2

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 特定的

于 2013-06-27T10:12:37.617 回答
0

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

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

于 2013-06-27T10:17:32.297 回答