在aidl服务实现中使用Context

时间:2013-10-30 08:37:33

标签: android android-service aidl android-context

我正在尝试在AIDL存根实现上访问sqlite DB(在包的不同部分填充)但是 - 那里没有上下文。我怎样才能获得上下文? 有2个项目(申请) - A,B。 项目A包含在sqlite DB上保留记录。并包含援助服务。 如果存在记录,项目B需要询问项目A(不同的包,可能有许多项目,如B)。项目A从存根中回答项目B的唯一方法是检查数据库是否有上下文(下面的代码中的“?????”) - 如何从存根中获取项目A的上下文?

AIDL的实施:

public class IRecordServiceImpl extends IRecordService.Stub{
    @Override
    public boolean RecordExists(String recordKey)
            throws RemoteException {
      boolean returnValue = false;
      RecordDataSource rds = new RecordDataSource(??????);
      rds.Open();
      returnValue = rds.isRecordExists(recordKey);
      rds.Close();
      return returnValue;
    }
}

服务代码:

public class IRecordService extends Service {

    private IRecordServiceImpl service;

    @Override
    public void onCreate() {
            super.onCreate();
            this.service = new IRecordServiceImpl();
    }

    @Override
    public IBinder onBind(Intent intent) {      
        return this.service;
    }

    @Override
    public boolean onUnbind(Intent intent) {
            return super.onUnbind(intent);
    }

    @Override
    public void onDestroy() {
            super.onDestroy();
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

问题已解决 - 您可以通过构造函数传递Service的{​​{1}}并将其作为私有字段保存在Context