У меня есть приложение Android, и у него есть служба переднего плана. Сервис потребляет данные из некоторых API. Этот процесс может занять минуты и часы. Во время работы сервиса он записывает логи в logcat с информацией о ходе выполнения и другой информацией. Но каждый раз, когда я запускаю свое приложение (и службу), оно через некоторое время перестает работать. Я предполагаю, что ОС убивает это по его причинам, но я не могу понять, почему и как избежать этого. Я посмотрел на logcat и нашел несколько подозрительных записей:
04-16 16:24:41.180 28045 28058 I MyCoolApplication: Background concurrent copying GC freed 90524(3MB) AllocSpace objects, 70(1400KB) LOS objects, 50% free, 7MB/14MB, paused 811us total 109.136ms
04-16 16:24:51.497 28045 28045 I MyCoolApplication: Explicit concurrent copying GC freed 87516(4MB) AllocSpace objects, 30(600KB) LOS objects, 49% free, 4MB/9MB, paused 303us total 51.352ms
И MyCoolApplication
- это имя моего приложения. Эти записи появляются во время работы приложения и продолжают появляться после его смерти. Что это может быть и как решить эту проблему?
UPD:
Вот мой сервис (код c #, я использую Xamarin)
class MyApiService : BackgroundService
{
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
base.OnStartCommand(intent, flags, startId);
var notification = CreateNotification();
StartForeground(100, notification);
ConsumeDataFromApi();
StopSelf(startId);
return StartCommandResult.Sticky;
}
private Notification CreateNotification()
{
// some code here
}
private void ConsumeDataFromApi(DateTime start, DateTime end)
{
// some long-running method consuming and performing data from json api
}
}