gpt4 book ai didi

xamarin - 如何在 Xamarin.Forms 中创建永无止境的后台服务?

转载 作者:行者123 更新时间:2023-12-03 18:31:35 25 4
gpt4 key购买 nike

我每 15 分钟监控一次用户的位置,我只希望应用程序继续发送位置,即使用户在任务栏中关闭应用程序也是如此。

我试过这个示例,但它在 Xamarin.Android https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/services/foreground-services 中我必须创建一个依赖服务,但我不知道如何。

最佳答案

i have to create a dependencyservice but i don't know how.



首先,创建一个 Interface在 Xamarin.forms 项目中:
public interface IStartService
{

void StartForegroundServiceCompat();
}

然后创建一个新文件让我们称之为 itstartServiceAndroid在 xxx.Android 项目中实现你想要的服务:
[assembly: Dependency(typeof(startServiceAndroid))]
namespace DependencyServiceDemos.Droid
{
public class startServiceAndroid : IStartService
{
public void StartForegroundServiceCompat()
{
var intent = new Intent(MainActivity.Instance, typeof(myLocationService));


if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.O)
{
MainActivity.Instance.StartForegroundService(intent);
}
else
{
MainActivity.Instance.StartService(intent);
}

}
}

[Service]
public class myLocationService : Service
{
public override IBinder OnBind(Intent intent)
{
}

public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
// Code not directly related to publishing the notification has been omitted for clarity.
// Normally, this method would hold the code to be run when the service is started.

//Write want you want to do here

}
}
}

一旦您想调用 StartForegroundServiceCompat Xamarin.forms 中的方法项目,您可以使用:
public MainPage()
{
InitializeComponent();

//call method to start service, you can put this line everywhere you want to get start
DependencyService.Get<IStartService>().StartForegroundServiceCompat();

}

这是关于 dependency-service 的文档

对于 iOS,如果用户在任务栏中关闭应用程序,您将无法再运行任何服务。如果应用程序正在运行,您可以阅读有关 ios-backgrounding-walkthroughs/location-walkthrough 的文档

关于xamarin - 如何在 Xamarin.Forms 中创建永无止境的后台服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58107522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com