У меня есть следующий код, который работает нормально, но он неожиданно вызывается 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