я использую следующий код
public override IBinder OnBind(Intent intent)
{
return null;
}
public static int ConvertMinutesToMilliseconds(int minutes)
{
return (int)TimeSpan.FromMinutes(minutes).TotalMilliseconds;
}
System.Threading.Timer _timer;
public override StartCommandResult OnStartCommand(Android.Content.Intent intent, StartCommandFlags flags, int startId)
{
DoWork();
_timer = new System.Threading.Timer((o) => {
SyncStepsToApi();
}, null, 0, 20000);
return StartCommandResult.Sticky;
}
public async void SyncStepsToApi()
{
SaveEmployeeActivities saveEmployeeActivities = new SaveEmployeeActivities();
saveEmployeeActivities.AuthenticationToken = APICalling.authToken;
saveEmployeeActivities.Steps =await db.GetUserSteps();
var numberOfActivitiesModified= await ServiceClient.SaveUserActivity(saveEmployeeActivities);
Notification.Builder notificationBuilder = new Notification.Builder(this)
.SetSmallIcon(Resource.Drawable.screen)
.SetContentTitle("perkit service notification")
.SetContentText(numberOfActivitiesModified.NoOfActivitiesModified.ToString());
var notificationManager = (NotificationManager)GetSystemService(NotificationService);
notificationManager.Notify(19000, notificationBuilder.Build());
}
для запуска фона службы, все работает нормально, кроме SyncStepsToApi();
, этот метод вызывается только тогда, когда приложение остается на переднем плане.
когда я закрываю, приложение работает нормально, за исключением того, что в syncsteptoapi (db.getusersteps) возвращает 0 записей.