мне нужно создать службу зависимостей, но я не знаю как.
Сначала создайте 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();
}
Вот документ о зависимость-сервис
Для iOS, если пользователь закрывает приложение на панели задач, вы не будетедольше сможете запускать любой сервис.Если приложение работает, вы можете прочитать этот документ о ios-backgrounding-walkthroughs / location-walkthrough