调用OnServiceConnected()时,所有Fields都为null

时间:2017-05-29 09:02:20

标签: android xamarin xamarin.android

我有一个使用Android服务的Xamarin.forms应用程序。 MainPage通过Dependency Service调用Android部分中的特定类 这个类绑定了服务。应用程序上下文由MainPage传递。

     internal class ServiceConnection : Java.Lang.Object, IServiceConnection {

       public IPlkScanService PlcScanService { get; private set; }

       private PlkSystemCallBack _plkSystemCallBack;
       private PlkScanCallBack _plkScanCallBack;
       private PlustecDocumentScanner _plustecDocumentScanner;

       public ServiceConnection(PlustecDocumentScanner plustecDocumentScanner, PlkScanCallBack plkScanCallBack, PlkSystemCallBack plkSystemCallBack) : this(){
         this._plkScanCallBack = plkScanCallBack;
         this._plkSystemCallBack = plkSystemCallBack;
         this._plustecDocumentScanner = plustecDocumentScanner;
       }

       public ServiceConnection(IntPtr dfref, JniHandleOwnership asdf) {

       }

    public void OnServiceConnected(ComponentName name, IBinder service) {
         this.PlcScanService = PlkScanServiceStub.AsInterface(service);
         try {
           this.PlcScanService.InitService(this._plkScanCallBack);
           this.PlcScanService.RegisterSystemCallBack(this._plkSystemCallBack);
           this.PlcScanService.MountScannerDevice();
           this._plustecDocumentScanner.PlcScanService = this.PlcScanService;
         } catch (RemoteException e) {
           e.PrintStackTrace();
         }
       }

}


一切都很好,但是当调用OnServiceConnected()方法时,我的所有成员变量都是null。

有人有想法吗?

{{1}}

1 个答案:

答案 0 :(得分:0)

Stackoverflow的其他帖子上找到问题 有两件事是错的。第一件事是,如果需要这个ctor,那就是非常错误:

public ServiceConnection(IntPtr dfref, JniHandleOwnership asdf) {
}

第二,我有一个本地副本,它覆盖了IntPtrHandle的基本版本:public IntPtr Handle { get; }。删除该属性可使地图正常工作 进一步的信息我发现here.