2016-03-02 64 views
0

我不是要求差異,但如何使用這些引用?,類級別的對象來存儲他們的引用或每次由超類提供的使用getter,這是一個更好的代碼實踐:1.調用getActivity(),getApplicationContext ()..每次在本地方法或傳遞方法中作爲參數在活動或片段中需要時。哪種方法可以更好地編寫getActivity(),getApplicationContext()?

  1. 將它們的引用存儲在類級別的對象中,並在需要時使用它,並在活動或片段中使用null檢查。

我想知道什麼是更有效率,爲什麼?

type1: 

Class A extends Activity 
{ 
    @Override 
    public void onCreate() 
    { 
     methodA(getApplicationContext()); 
     //or if fragment 
     methodA(getActivity()); 

     Toast.makeText(getApplicationContext(),...).show(); 
    } 

private void methodA(Context mContext) 
{ 
    ...... 
    ...... 
} 
private void methodA() 
{ 
    Activity activity = getActivity(); 
    ...... 
    ...... 
} 

} 

type2: 

class A extends Activity{ 
private Activity mContext; 
private Activity mActRef; //if fragment 

@Override 
public void onCreate() 
{ 
mContext = getApplicationContext(); 
mActRef = getActivity();//if fragment; 
     methodA(mContext); 
     //or if fragment 
     methodA(mActRef); 
    .......... 
......... 
......... 

     Toast.makeText(mContext,...).show(); 
} 

private void methodA(Context mContext) 
{ 
    ...... 
    ...... 
} 
private void methodA() 
{ 
    Toast.makeText(mContext,....).show(); 
} 

} 

} 
+0

活動和應用程序上下文用於不同的目的。如果他們之間沒有差異,我們只能得到一個。請參閱文檔以瞭解稍微但重要的區別 – Blackbelt

+0

我不問我差異的問題如何使用它們:使用類級對象或使用提供的getter方法。 –

+0

'getActivity()'不是'Activity'的一種方法,順便說一句,如果你在一個可以直接訪問上下文的類中,不需要提供以Context爲參數的方法。只有在方法是靜態的時候才需要這樣的方法 – Blackbelt

回答

-1

getActivity()和getApplicationContext()都返回上下文,並且可以在整個類中使用extend使用Activity。

根據我的意見不需要爲他們創建一個全局變量,因爲他們在課堂上是可用的。兩者都是正確的,但存儲上下文效率不高。