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