Xamarin.android Xamarin窗体正在调用的后台委托

Xamarin.android Xamarin窗体正在调用的后台委托,xamarin.android,xamarin.forms,Xamarin.android,Xamarin.forms,我目前正在使用检测网络状态。我试图做的是,当我想要发送数据,而设备处于脱机状态时,我使用消息服务和相应的平台特定代码启动后台任务,如图所示 我遇到的问题是,Android服务有一个回调,即使在我停止服务后,它仍会继续被调用。下面的代码将委托分配给CrossConnectivity.Current.ConnectionyChanged,并应在恢复网络连接时发送所需数据后停止服务 public override StartCommandResult onStart命令(Intent-Intent、S

我目前正在使用检测网络状态。我试图做的是,当我想要发送数据,而设备处于脱机状态时,我使用消息服务和相应的平台特定代码启动后台任务,如图所示

我遇到的问题是,Android服务有一个回调,即使在我停止服务后,它仍会继续被调用。下面的代码将委托分配给
CrossConnectivity.Current.ConnectionyChanged
,并应在恢复网络连接时发送所需数据后停止服务

public override StartCommandResult onStart命令(Intent-Intent、StartCommandFlags、int-startId)
{
...
Task.Run(()=>
{
CrossConnectivity.Current.ConnectivityChanged+=委托
{
if(交叉连接.当前.断开连接)
{          
如果(!App.ServerManager.IsUserLoggedIn())
App.ServerManager.LoginUserAsync(常量用户);
//发送我们的数据
foreach(sList中的样本项目)
{
尝试
{
//查询以查看它是否存在于服务器上
App.ServerManager.GetSamplesAsync();
任务t=App.ServerManager.saveSamPleaseSync;
}
捕获(例外e)
{
WriteLine(@“ERROR{0}”,e.Message);
}
}
//实例化生成器并设置通知元素:
Notification.Builder=new Notification.Builder(此)
.SetContentTitle(“Jarver Industries”)
.SetContentText(“样本成功发送!”)
.SetDefaults(NotificationDefaults.Sound)
.SetSmallIcon(Resource.Drawable.banner);
//生成通知:
通知通知=builder.Build();
//获取通知管理器:
通知经理通知经理=
GetSystemService(Context.NotificationService)作为NotificationManager;
//发布通知:
const int notificationId=19900203;
notificationManager.Notify(notificationId,notification);
发送(此“完成”);
StopSelf();
}
};
});
返回StartCommandResult.Sticky;
}

我确信我在.NET级别上做了一些错误的事情,但我不确定还有什么替代方案。

您能发布发送数据的代码吗?并请调试以检查是否执行
StopSelf()
get execute。完成后,StopSelf()肯定正在执行。