我正在尝试创建一个后台调度程序,它将定期在服务器上发送数据。 为此,我在Android中创建了服务,该服务将在1分钟后使用MessageCenter
向Xamarin.Forms
发送消息,以便它可以将数据发送到服务器。
与将数据发送到服务器相关的代码驻留在Xamarin.Forms
因此我通过MessageCenter
从Xamarin.android
到Xamarin.Forms
进行通信
当应用程序位于前台时,它运行良好,但当我从最近的应用程序中删除时。
MessageCenter
订阅Xamarin.Forms
死了,因此当服务Xamarin.Android
发布事件到Xamarin.Forms
没有人在那里收听时,因此我的数据没有发布在服务器上。
用于订阅消息中心的 Xamarin.Forms 代码
public void subscribeSyncScheduler()
{
MessagingCenter.Subscribe<IMessage, EventType>(this, RestApi.SYNC_SCHEDULER_EVENT, (sender, arg) =>
{
//SYNC DATA TO SERVER
});
}
服务正在向 Xamarin.Forms 呈现事件
public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId)
{
Log.Error(TAG, "Sync: Service gets called ");
MessagingCenter.Send<IMessage, EventType>(this, RestApi.SYNC_SCHEDULER_EVENT, null);
}
参考 http://arteksoftware.com/backgrounding-with-xamarin-forms/
使用 Android 后台服务和 iOS 后台线程 使用依赖关系服务运行任务,即使在应用最小化或终止后