1
我正在使用一些內部調用ContextWrapper.getPackageName()
的專用代碼(SDK)。當運行從服務調用代碼時,我得到一個NullPointerException
。在上下文對象上。服務上下文爲空
作爲一些背景信息,服務作爲單獨的進程運行,但我可以直接訪問服務類。如果我通過主UI應用程序(Activity)的上下文,那麼一切正常。如果我嘗試使用Service實例,則會出現問題。
我有一種感覺,上下文可能還沒有完全初始化的時間被調用。我應該在什麼時候稱呼它?
爲什麼上下文爲空?
這是一些代碼 - 我試過從Service.onBind()
和ServiceConnection.onServiceConnected()
函數中實例化SDK。
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
try {
sdk = new SDK(SDKService.this);
sdk.setCallbacks(sdkWrapperCallbacks);
connectionCallbacks.onConnected(messengerInbound);
}
catch (final Exception e) {
e.printStackTrace();
connectionCallbacks.onConnectionError(e.getMessage());
}
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
connectionCallbacks.onDisconnected();
}
@Override
public IBinder onBind(Intent intent) {
SDK = new SDK(SDKService.this);
SDK.setCallbacks(sdkWrapperCallbacks);
connectionCallbacks.onConnected(messengerInbound);
return messengerInbound.getBinder();
}
當我使用'this'時'ContextWrapper'中的'mBaseContext'爲'null',因此會引發NPE。爲什麼是這樣? – conor