2013-08-03 121 views
1

我正在使用助手類,並想知道使用Acitvity對象和使用Context對象的實際區別。在Android Helper類中使用Context和Activity有什麼區別?

說我有一個類,並說,我創建該類輔助對象是這樣的:

Helper h = new Helper(this); 

現在我可以設置我的助手類是這樣的:

public class Helper { 
    private Activity a; 

    public Helper(Activity a) { 
     this.a = a; 
    } 
} 

還是我可以這樣做:

public class Helper { 
    private Context c; 

    public Helper(Context c) { 
     this.c = c; 
    } 
} 

什麼時候應該使用哪種方法?優缺點都有什麼?

+2

活動是一個上下文,也就是說,它擴展了上下文。請閱讀關於此的文檔。除了通過Intent或調用startActivity啓動它之外,您不應創建Activity類的實例。因此,沒有優點和缺點,因爲你不應該使用第一種模式。 – Simon

回答

1

使用:

public Helper(Activity a) { 
     this.a = a; 
    } 

比使用更具體:

public Helper(Context c) { 
     this.c = c; 
    } 

這意味着(例如)如果你叫Helper(MainActivity); 將參考Helper(Activity a)首先,如果您有兩個構造函數「具有不同的返回類型!」 。 類似於: Class(Object o)Class(String s) 調用Class(null)Class(String s)導致響應不Class(Object o)

語境是基本對象所以每活動延伸語境

java.lang.Object 
    ↳ android.content.Context 
     ↳ android.content.ContextWrapper 
      ↳ android.view.ContextThemeWrapper 
       ↳ android.app.Activity 

Documentation

希望這會有所幫助。

相關問題