2016-03-14 4 views
-1

Как сохранить сервис в реальном времени с помощью AlarmManager в Android API 23?Сохранять сервис в android api = <23

Мне нужно обновить свой метод каждые 1 минуту. Это моя служба:

public class ApplicationService extends Service { 

    @Override 
    public IBinder onBind(Intent paramIntent) { 
     return null; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Log.d(ApplicationService.class.getName(), "start"); 
     UpdateUtils updateUtils = UpdateUtils.getInstance(getApplicationContext()); 

     IntentFilter intentFilter = new IntentFilter(); 
     intentFilter.addAction(Intent.ACTION_DATE_CHANGED); 
     intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED); 
     intentFilter.addAction(Intent.ACTION_TIME_CHANGED); 
     intentFilter.addAction(Intent.ACTION_SCREEN_ON); 
     intentFilter.addAction(Intent.ACTION_TIME_TICK); 
     registerReceiver(new BroadcastReceivers(), intentFilter); 

     Utils utils = Utils.getInstance(getBaseContext()); 
     utils.loadApp(); 
     updateUtils.update(true); 
     return START_STICKY; 
    } 
} 
+0

Какой код вы уже пробоировали? –

+0

Вы пытались вызвать startForeground (int, уведомление)? http://developer.android.com/reference/android/app/Service.html#startForeground(int, android.app.Notification) –

+0

Ссылка на код, который использует AlarmManager. –

ответ

0

К сожалению Couldnt понять ваш вопрос, почему вам нужен менеджер тревоги, чтобы сохранить службу в живых?

Служба всегда работает в фоновом режиме сама по себе. Если убит из-за ограничений памяти, вы можете попросить ОС перезапустить его, определив его как липку в onBind() метод


Update

тогда вы не хотите, чтобы сохранить вашу службу в живых. Я имею в виду, что вы заявили, что ваш запрос запутан. Теперь я понимаю, что вы хотите выполнить какое-либо действие после каждого «xx» времени.

Вы можете сделать следующее: использование setExact() способ AlarmManager. Выполните операцию, требуемую в приемнике onReceive(). В качестве части последнего шага в этом onReceive() снова используйте метод setExact().

Вы также можете использовать setRepeating(), если время выполнения не должно быть точным.

+0

В службах lollipop для Android, которые будут спать на очереди off screen –

+0

Первое сообщение обновлено, пожалуйста, проверьте его –

+0

обновлено ответ –

0

Если ваша проблема связана с тем, что приложение заблокировано, вы пытались использовать wakelock?

http://developer.android.com/reference/android/os/PowerManager.html

+0

Первое сообщение обновлено, пожалуйста, проверьте его –

+0

Попробуйте использовать http://developer.android.com/training/scheduling/alarms.html. «Они работают за пределами вашего приложения, поэтому вы можете использовать их для запуска событий или действий, даже если ваше приложение не работает, и даже если само устройство спит». –

Смежные вопросы