2015-08-28 3 views
1

Я использую собственный код (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(); 
    } 

ответ

0

Если вы получаете контекст службы с использованием getApplicationContext() в то время как эта услуга работает в отдельном процессе, то его это дизайн. У вашего сервиса нет доступа к контексту приложения, но он имеет доступ к локальному контексту службы, к которому можно получить доступ, используя this.

+0

Когда я использую 'this',' mBaseContext' в 'ContextWrapper' является' null' и поэтому выбрасывает NPE. Почему это? – conor

Смежные вопросы