Android-сервис закрывается через 10 секунд - PullRequest
2 голосов
/ 23 марта 2012

Я разрабатываю приложение для Android, которое отслеживает некоторые вещи в фоновом режиме, пока приложение работает.Я новичок в Android, поэтому я попытаюсь описать, что я хочу сделать.

Настройка: MainActivity, TrackerActivity, TrackerService (служба содержит wakelock) и TrackerServiceWakeupReciever

Это выполняется, когда TrackerService закрывается.

public class TrackerServiceWakeupReciever  extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        Intent serviceIntent = new Intent(); 
        serviceIntent.setAction("com.example.android.TrackerService");
        serviceIntent.putExtra("action", "checkSound");
        context.startService(serviceIntent);
    }
}

Код, который запускает Сервис из TrackerActivity:

Intent serviceIntent = new Intent();
serviceIntent.setAction("com.example.android.TrackerService");
startService(serviceIntent);

При входе в приложение запускается MainActivity, затем, когда TrackerActivity получаетTrackerService запускается из MainActivity и запускается в onCreate of TrackerActivity.Служба работает ровно 10 секунд и закрывается.Затем TrackerServiceWakeupReciever снова запускает службу, и она снова запускается 10 с и выполняет цикл.

Почему он запускается только через 10 секунд?Я заметил, что если я быстро вернусь к MainActivity и нажму кнопку ожидания, служба продолжит работу.Даже когда устройство выходит из спящего режима, служба работает, как я хочу.

Как решить эту проблему?Использовали неделю, чтобы понять это.Я думаю, что это просто:)

Спасибо заранее.Martin

1 Ответ

0 голосов
/ 14 июня 2016

Может ли это быть из-за необработанной реализации goAsync () где-то в одном из ваших (других) BroadcastReceivers?Через 10 секунд они закрываются, если вы не вызывали finish () для PendingResult, полученного из goAsync ().См. Документы здесь:

BroadcastReceiver

В противном случае, возможно (вообще говоря), вы заблокируете что-то слишком долго.

...