此:在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