Android. Служба переднего плана всегда останавливалась

#android #android-service #foreground-service

#Android #android-сервис #служба переднего плана

Вопрос:

У меня есть приложение для 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
    }
}
  

Комментарии:

1. Эта ошибка связана с исключением памяти. Итак, если вы выполняете какую-либо серьезную обработку изображений или обрабатываете большой объем данных, то он освобождается с помощью GC, в то время вы можете избавиться от этой проблемы из памяти.

2. Можете ли вы указать код, который вы используете? Загружаете ли вы изображения?

3. @ismailalaoui Нет, я не обрабатываю никаких изображений. Добавлен код