我在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的内容。
其背后的想法是在清单中创建BroadcastReceiver和Android服务。然后,在关闭应用程序时,BroadcastReceiver将以前台优先级激活服务。如果您要处理Android 7之后的版本,那么他会在他的博客上创建一个更新,显示The Fix。
为了更好地了解基本的Android服务如何运行,我建议您看一下[Android Services Tutorial
[我也看到了this其他StackOverflow帖子,它们看起来非常相似,所以也许那里也会有一些有用的信息。
我不太适应这些内容,但是我能够很轻松地跟随博客文章,所以希望对您有所帮助:)。如果有人找到更好的解决方案,我很想听听它,所以请标记为(如果您愿意的话),以便我随时保持更新!