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