Unity Android Context 問題
阿新 • • 發佈:2019-01-02
Unity Android Context 問題
Android端Context
Context到底是什麼
Context
的中文翻譯為 上下文,環境. 開發中稱之為 上下文
.
這個 上下文
可以理解成為當前物件在程式中所處的一個環境,一個與系統互動的過程.
Context
在載入資源,啟動Activity,獲取系統服務,建立View等操作都要參與.
如何獲取Context
通常我們想要獲取Context物件,主要有以下四種方法
- View.getContext,返回當前View物件的Context物件,通常是當前正在展示的Activity物件。
- Activity.getApplicationContext,獲取當前Activity所在的(應用)程序的Context物件,通常我們使用Context物件時,要優先考慮這個全域性的程序Context。
- ContextWrapper.getBaseContext():用來獲取一個ContextWrapper進行裝飾之前的Context,可以使用這個方法,這個方法在實際開發中使用並不多,也不建議使用。
- Activity.this 返回當前的Activity例項,如果是UI控制元件需要使用Activity作為Context物件,但是預設的Toast實際上使用ApplicationContext也可以。
Unity給Android傳遞上下文
專案中,Android端是作為庫,提供給Unity呼叫.
那麼,必須保證Android端中的上下文 com.unity3d.player.UnityPlayer
的 currentActivity
Unity端
:
AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject androidJavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity"); javaPlayer = new AndroidJavaObject("com/compilelife/mediacodecexample/MainActivity"); if (javaPlayer == null) { Debug.Log("jianzhao javaPlayer is null!!"); } javaPlayer.Call<int>("init", androidJavaObject);
Android端
:
void init(Activity mainActivity){
this.context = (Context)mainActivity;
// 後續需要context的地方就是用這個context.不然會經常出現空指標異常
}
後續需要context的地方就是用這個context.不然會經常出現空指標異常