服务上下文为空

时间:2015-08-28 08:58:06

标签: android

我正在使用一些内部调用ContextWrapper.getPackageName()的专有代码(SDK)。当从服务中调用代码时,我得到NullPointerException。在上下文对象上。

作为一些背景信息,该服务作为单独的进程运行,但我可以直接访问服务类。如果我传入主UI应用程序(Activity)的上下文,那么一切正常。如果我尝试使用服务实例,就会出现问题。

我感觉上下文在被调用时可能尚未完全初始化。我应该在什么时候称之为?

为什么上下文为空?

以下是一些代码 - 我尝试在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();
    }

1 个答案:

答案 0 :(得分:0)

如果您在使用getApplicationContext()时使用this服务上下文,而该服务是在单独的流程中运行,那么它是设计使然。您的服务无法访问应用程序上下文,但可以访问本地服务上下文,可以使用{{1}}进行访问。