Я использую собственный код (SDK), который вызывает ContextWrapper.getPackageName()
внутренне. При запуске вызова кода из службы я получаю NullPointerException
. на объект контекста.Сервисный контекст null
Как некоторая справочная информация, служба запускается как отдельный процесс, но у меня есть прямой доступ к классу службы. Если я перейду в контексте основного приложения пользовательского интерфейса (Activity), тогда все будет работать нормально. Проблема возникает, если я пытаюсь использовать экземпляр службы.
У меня возникло ощущение, что контекст может еще не полностью инициализироваться к тому времени, когда он призван. В какой момент я должен его назвать?
Почему контекст null?
Вот какой-то код. Я попытался создать экземпляр SDK с помощью функций Service.onBind()
и ServiceConnection.onServiceConnected()
.
@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',' mBaseContext' в 'ContextWrapper' является' null' и поэтому выбрасывает NPE. Почему это? – conor