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

2024-02-04

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

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


我必须创建一个依赖服务,但我不知道如何创建。

首先,创建一个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();

}

这是有关的文档依赖服务 https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/

对于iOS,如果用户关闭任务栏中的应用程序,则将无法再运行任何服务。如果应用程序正在运行,您可以阅读此文档ios 背景演练/位置演练 https://learn.microsoft.com/en-us/xamarin/ios/app-fundamentals/backgrounding/ios-backgrounding-walkthroughs/location-walkthrough

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Xamarin.Forms 中创建永无止境的后台服务? 的相关文章

  • 如何在 Xamarin.Forms 中强制使用浅色模式?

    我的应用程序的 UI 设计为在灯光模式下使用 但如果手机的默认主题是深色模式 我的应用程序也会切换到深色模式 并且 UI 看起来很垃圾 所以我想强制我的应用程序使用灯光模式 我怎样才能做到这一点 In my app xaml我使用的文件Us
  • 在 Monogame 和 UIKit 之间切换

    我一直在搜索和搜索 但似乎找不到适合我想做的事情的解决方案 而且我几乎已经到了不得不问它是否可能的地步 我正在使用 Xamarin Studio 开发 iOS 应用程序 我有几个不同的屏幕设置为 UIViewController 它们运行良
  • Xamarin 中 QR 扫描后的处理对话框

    我在Xamarin应用程序中使用QR码扫描仪 当它扫描QR码时 它会执行一些操作 大约需要一分钟 而在执行操作时 我想在屏幕上显示一个加载对话框 但是 它没有显示在屏幕上 并且在应用程序的其他地方 它运行得很好 Code var expec
  • 错误:找不到 Android SDK,请在 Xamarin.Android SDK 设置面板中设置它的路径。 (测试安卓)

    错误 找不到 Android SDK 请在 Xamarin Android SDK 设置面板中设置它的路径 测试安卓 我选择了 android sdk 文件夹 但它不起作用 从以下位置下载 Android SDK官方网站 https dev
  • 使用 HttpClient 的 Xamarin.iOS 项目出现“操作无效”错误

    我创建 HttpClient 并在按钮单击处理程序中调用 GetStringAsync 方法 var client new HttpClient var response await client GetStringAsync http g
  • 如何在 xamarin.forms 中隐藏列表视图的空行

    我有一个StackLayout with a ListView我有一个添加按钮 我想将其显示在ListView 但是ListView显示许多未使用的行 只是空行 这迫使我的按钮显示在页面底部 我一直在搞乱VerticalOptions一整天
  • Xamarin 没有安装的配置文件与安装的 iOS 签名身份匹配

    我想知道是否可以在 ios 设备上编译 Xamarin 应用程序 使用 Visual Studio for mac 而无需成为开发人员 费用为 99 美元 年 因为当我尝试在 iPhone 上构建项目时出现此错误 Xamarin iOS C
  • 目标“MonoAndroid,版本= v6.0”项目依赖项

    我的 Visual studio 2017 nuget 包无法安装 Xamarin Forms 可移植类库项目中出现以下错误 严重性代码 说明 项目文件行抑制状态 错误无法安装包 Xamarin Android Support Compat
  • 使用 SSL 的 Xamarin.Forms Image.Source

    我正在使用一个在线商店来存储通过我们的应用程序上传的用户图像 并受 SSL 保护 上传工作一切顺利 因为我使用的是带有附加证书的 WebClient 但是当我尝试使用 Xamarin Forms Image 组件时 例如将源设置为 http
  • Xamarin Dim 页面(主详细信息页面)

    因此 对于 Android 当显示主从页面的母版页时 母版页会被 黑色暗淡 视图覆盖 因此很容易用眼睛区分这两个页面 在 iOS 中 详细信息页面不会变暗 因此更难区分视图 有没有办法用 黑色半透明 的 BoxView 或 Frame 覆盖
  • 如何在 Xamarin.Mac 中执行终端命令并读入其输出

    我们正在编写一个 Xamarin Mac 应用程序 我们需要执行像 uptime 这样的命令 并将其输出读取到应用程序中进行解析 这可以做到吗 在 Swift 和 Objective C 中都有 NTask 但我似乎无法在 C 中找到任何示
  • 如何确定 Xamarin Forms 中点击的位置?

    在 Xamarin Forms 中 如何找出点击的位置 例如在图像内 我的代码是 var tapGestureRecognizer new TapGestureRecognizer tapGestureRecognizer Tapped O
  • Xamarin - 在 xmlns clr 命名空间中找不到类型

    我正在制作一个 Xamarin Forms 应用程序 解决方案称为RESTTest 我的共享项目名为RestApp 在我的共享项目中 我有一个名为ViewModels 其中包含一个名为MainViewModel cs 我有一个名为MainP
  • 当输入字段不可见时,如何隐藏 Xamarin 表单中的错误标签?

    我正在尝试创建一个存在验证错误的登录页面 现在 如果输入字段不可见 也会出现验证错误 当输入字段不可见时 如何隐藏错误标签 如下图 PIN输入字段在登录页面上不可见 但出现错误消息 需要 PIN 码 强调 请问有人可以建议一个解决方法吗 同
  • Xamarin Forms WebView 打开外部链接

    我的应用程序中有一个网络视图 当单击外部链接 在普通浏览器中在新选项卡中打开 时 我无法返回我的网站 当打开一个新标签时 有可能像 Gmail 一样关闭该标签的菜单吗 目的是 每当单击链接时 用户都可以选择使用哪个选项来查看内容 例如单击链
  • Xamarin.Forms - 在运行时在深色和浅色主题之间切换

    1 是否可以使用 2 3 x 版本中引入的 Xamarin Forms 主题 下面的链接 在浅色和深色主题之间切换 有什么解决办法吗 https developer xamarin com guides xamarin forms user
  • 谷歌地图url如何定义圆形标记?

    我想打开默认地图应用程序 但我想要一个圆形标记 而不是默认标记 这就是我所拥有的 case Device Android if string IsNullOrEmpty imovel Endereco Freguesia uri new U
  • 如何在Xamarin Forms中实现Google Auth登录?

    我是 Xamarin 新手 我希望使用 Xamarin Forms 在我的新应用程序中进行 Google 登录 正确的方法是什么 有更新的教程或视频来指导吗 从哪儿开始 thanks 除了link https developer xamar
  • xamarin studio 中有包管理器控制台吗

    我正在使用 xamarin studio 带有 nuget 包管理插件 并且在我的项目中有一些 nuget 包 项目上下文菜单中有 管理 和 恢复 nuget 包 但也有控制台吗 Xamarin Studio 和 MonoDevelop 的
  • xaml UI 未以 xamarin 形式更新

    我将我的模型与我的 UI 绑定 在我的模型中 我做了一些计算 但其他属性与 UI 绑定 但我完成计算的某些属性不与我的 UI 绑定 而是在我的 OnPropertyChange 事件中显示计算 帮助我解决我的代码问题在哪里 提前致谢 我的模

随机推荐