Xamarin.Forms,iOS,Android中的后台服务

问题描述 投票:0回答:1

我在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" />

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

xamarin.forms xamarin.android xamarin.ios
1个回答
0
投票

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

其背后的想法是在清单中创建BroadcastReceiver和Android服务。然后,在关闭应用程序时,BroadcastReceiver将以前台优先级激活服务。如果您要处理Android 7之后的版本,那么他会在他的博客上创建一个更新,显示The Fix

为了更好地了解基本的Android服务如何运行,我建议您看一下[Android Services Tutorial

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

我不太适应这些内容,但是我能够很轻松地跟随博客文章,所以希望对您有所帮助:)。如果有人找到更好的解决方案,我很想听听它,所以请标记为(如果您愿意的话),以便我随时保持更新!

© www.soinside.com 2019 - 2024. All rights reserved.