2016-02-11 104 views
0

如果我有一個類OnlineDataRetrieval,我需要在我的活動使用時有時無,是明智打開該類的全局對象和重用整個活動的使用壽命該對象或者我應該在每次需要使用該類時創建一個本地對象?創建一個全局對象或多個本地對象

所以基本上我想知道哪些選項下面是從性能的角度來看最好?

選項1

public class Activity extends Activity { 
    OnlineDataRetrieval onlineDataRetrieval; 
    protected void onCreate(Bundle savedInstanceState){ 
     onlineDataRetrieval = new OnlineDataRetrieval(this); 
    } 
    public void methodA(){ 
     onlineDataRetrieval.callSomeMethod(); 
    } 
    public void methodB(){ 
     onlineDataRetrieval.callSomeMethod(); 
    } 
    public void methodC(){ 
     onlineDataRetrieval.callOtherMethod(); 
    } 
} 

選項2

public class Activity extends Activity { 
    protected void onCreate(Bundle savedInstanceState){ 

    } 
    public void methodA(){ 
     OnlineDataRetrieval onlineDataRetrieval = new OnlineDataRetrieval(this); 
     onlineDataRetrieval.callSomeMethod(); 
    } 
    public void methodB(){ 
     OnlineDataRetrieval onlineDataRetrieval = new OnlineDataRetrieval(this); 
     onlineDataRetrieval.callSomeMethod(); 
    } 
    public void methodC(){ 
     OnlineDataRetrieval onlineDataRetrieval = new OnlineDataRetrieval(this); 
     onlineDataRetrieval.callOtherMethod(); 
    } 
} 
+0

去調用構造函數多次比正從存儲器中現有的參考... –

+0

這是我贊成方案1的思想最有可能比較慢,但是我對於我在某處讀過的陳述有些困惑:「重要的是我們處理我們不再需要或使用的對象,並釋放內存用於其他用途。」 ...選項1中,我保持對象活動的壽命,但我可能不會使用,對長(可能不是在所有在某些情況下) – abdfahim

+0

你問「從性能的角度來看」。管理對象生命週期是一個可維護性問題。 –

回答

1

Java是面向對象。每次初始化該類的新實例時,都會創建一個新對象。如果你不需要創建新的實例,那麼你從類中調用方法的選項是可以接受的。

這是因爲製造物體一次,並調用一個方法從三次對創建對象三個不同的時間和呼叫從三個不同的對象相同的方法簡單。

性能方面,我會選擇1

+0

我對我在什麼地方宣讀了一份聲明有點糊塗了:「我們處理,我們不再需要的對象的,或使用並釋放用於其他用途的內存是很重要的。」 ...在選項1中,我實際上保留了Activity的使用壽命的對象,儘管我可能不會長時間調用該對象(假設MethodA,B和C由按鈕操作調用)。那麼,我應該這樣做嗎? – abdfahim

+1

這真的取決於您在程序中使用對象的頻率。如果只使用它一點,那麼用三種方法創建它的一個實例可能會更好。在我看來,你需要調用它幾次。如果您只創建一次對象並調用這些方法,那麼您仍然只使用這個對象。如果你使用線程來打電話,垃圾回收之前可能會有數百個新對象。這取決於你的程序以及你將如何使用它。 – DarkJade