此:在Activity中声明最终变量并在onCreate方法上实例化它们之间有什么区别?
public class LoadingActivity extends Activity {
final private ContactManager cm = new ContactManager(this);
...
与此:
public class LoadingActivity extends Activity {
private ContactManager cm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loading);
cm = new ContactManager(this);
...
我理解的最终意义,变量将无法重新实例化,但是我不知道使用哪种模式,这是如何影响垃圾收集器的?我猜想在第二个版本中,我可以使用onDestroy来通知垃圾收集器我完成了变量。那有意义吗?这是需要的吗?
你能解释更多吗?按照我看到的第二种方法也是正确的。 –
@ZahanSafallwa:只有当可以安全地将其交给其他职业时,才引用一个对象(例如,在这种情况下为“this”)。在这种情况下,'Activity'或'Service'在'super.onCreate()'之后才会准备好。 *可能*''ContactManager'不会对它在构造函数中接收到的'Activity'做任何事情,除非它是安全的,但我们不知道,并且'ContactManager'将来可能会改变。因此,只有在'super.onCreate()'之后,我们知道这样做是安全的时,才能创建'ContactManager'并将其传递给'Activity'。 – CommonsWare
无论如何,在Activity类中的声明时实例化变量是否正确?正如我所看到的,Activity的变量声明部分就像一个构造函数,不是吗? – Guy