Одно заявление о подписке ошибочно вызывает одного и того же абонента два раза неожиданно с Xamarin Android и TinyMessenger - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть следующий код, который работает нормально, но он неожиданно вызывается MyMessageHandler два раза вместо одного раза ниже.

  [Activity(Label = "My app", MainLauncher = true, Name = "com.myapp.StartupActivity")]
    public class StartupActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            Intent serviceIntent = new Intent(this, typeof(MainApplicationService));

            StartService(serviceIntent);

            Finish();
        }
    }

[Service(Name = "com.myapp.MainApplicationService", Label = "Main Application Service", Exported = false)]
    public class MainApplicationService : Service
    {
        private IDeviceLog _logger;

        public override IBinder OnBind(Intent intent)
        {
            return null;
        }

        [return: GeneratedEnum]
        public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId)
        {
            _logger = Ioc.Container.Resolve<IDeviceLog>();
            _logger.Info("MainApplicationService started");
             var worker = Ioc.Container.Resolve<IWorker>();
            Task.Run(async () => await worker.Init());

            return StartCommandResult.Sticky;
        }
    }

    public class Worker:IWorker {           
      private async Task Init(){
     _tinyMessengerHub = Ioc.Container.Resolve<ITinyMessengerHub>();
      _tinyMessengerHub.Subscribe<MyMessage>(MyMessageHandler);
      }

   public void MyMessageHandler(MyMessagemessage)
   {
      _deviceLog.Info($"{nameof(MyMessagemessage)} received");  //called two times wrongly

      }

}

После перезапуска приложения MyMessageHandler снова работает, что вызывается один раз, а не два.

Вопрос :

Это проблема с Android или TinyMessenger?

Xamarin Android, Android Леденец, TinyMessenger ver 1.

https://github.com/grumpydev/TinyMessenger

...