Android 開發中 getContext 和 getActivity的區別

DooneZhang發表於2021-01-03

Android 開發中 getContext 和 getActivity的區別

  • MainActivity.this:表示MainActivity物件,一般用在內部類中指示外面的this,如果在內部類直接用this,指示的是內部類本身。因為MainActivity繼承Activity,而Activity繼承Context,所以它也可以用來提供Activity Context;

  • this:表示當前物件;一般而言,在哪個類中呼叫,就是指向該物件。

  • getContext():這個是View類中提供的方法,在繼承了View的類中才可以呼叫,返回的是當前View執行在哪個Activity Context中。

  • getActivity():獲得Fragment依附的Activity物件。Fragment裡邊的getActivity()不推薦使用原因如下:這個方法會返回當前Fragment所附加的Activity,當Fragment生命週期結束並銷燬時,getActivity()返回的是null,所以在使用時要注意判斷null或者捕獲空指標異常。

    在Fragment中獲取上下文Context一般用getActivity:
    
    全域性Application:
    public class Application extends Application {
     
     
        private static Application instance;
     
        @Override
        public void onCreate() {
            super.onCreate();
            instance = this;
        }
     
        public static Application getInstance(){
            return instance;
        }
     
     
    }
     
     
    在Fragment中直接使用getContext方法容易產生空指標異常,覆寫getContext方法
    private Activity activity;
     
    public Context getContext() {
        activity = getActivity();
        if (activity == null) {
            return HSApplication.getInstance();
        }
     
        return activity;
    }
    

 

相關文章