xamarin.forms - Xamarin.Forms、iOS、Android 中的后台服务

标签 xamarin.forms xamarin.android xamarin.ios

我在android中有一个后台服务。

我的代码如下:

[Service]
public class PeriodicService : Service
{
    public override IBinder OnBind(Intent intent)
    {
        return null;
    }

    public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
    {
        Device.StartTimer(TimeSpan.FromSeconds(5), () =>
             {
                 // code
              });
        return StartCommandResult.Sticky;
    }

}

MainActivity 类:

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    global::Xamarin.Forms.Forms.Init(this, bundle);
    LoadApplication(new App());

    StartService(new Intent(this, typeof(PeriodicService)));
}

权限AndroidManifest.xml:

<uses-permission android:name="android.permission.PeriodicService" />

问题是我的服务仅在应用程序处于事件状态或在前台时在后台运行,但当我关闭应用程序时,它不会在后台运行。

最佳答案

一个可能的解决方案是遵循 Fabio 在他的帖子中写的关于如何创建 The Never Ending Background Task 的内容。

其背后的想法是在 list 中创建一个 BroadcastReceiver 和 Android 服务。然后,当应用程序关闭时,BroadcastReceiver 将激活具有前台优先级的服务。如果您正在处理 Android 7 后的问题,那么他会对其博客进行更新,显示 The Fix .

为了更好地了解基本 Android 服务的运行方式,我建议您查看此 Android Services Tutorial

我还看到了this其他 StackOverflow 帖子似乎非常相似,所以也许那里也会有一些有用的信息。

我不太适应这些东西,但我能够很容易地跟随博客文章,所以我希望这最终会有所帮助:)。如果有人找到更好的解决方案,我很想听听它,所以标记为(如果你愿意的话),这样我就可以保持更新!

关于xamarin.forms - Xamarin.Forms、iOS、Android 中的后台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59770126/

相关文章:

android - 如何在 MonoDevelop 中编译 MonoDroid App 时修复 "OutOfMemoryError: java heap space"

android - 如何为不同大小的 Android 创建 UI

这个基类的 C# 子类?

xaml - 如何在 XAML 中将 FontAttributes 设置为粗体和斜体?

c# - 将 Lambda 函数传递给 Xamarin.Android 绑定(bind)库中的 Kotlin 的 C# 生成代码

opengl-es - Xamarin : Loading resources via GetManifestResourceStream

xamarin - 管理 Xamarin 表单中的资源图像

c# - C#移动版中不存在路径和文件

c# - 如何使用 Xamarin.from 应用部署数据库文件?

c# - 如何使用 C# 在 Xamarin 中实现下拉刷新