2016-02-06 4 views
1

Моя задача - запустить сервис, даже если приложение закрыто.запустить сервис, даже если приложение Android закрыто

Мой класс обслуживания:

public class MyService extends Service { 

    public int onStartCommand(Intent intent, int flags, int startId) { 
     AudioManager am; 
     am= (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 
      if(am.getRingerMode() == AudioManager.RINGER_MODE_NORMAL) 
     am.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
      else 
      am.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
     Minute minute = new Minute(); 
     Calendar cal = Calendar.getInstance(); 
     AlarmManager alarms ; 
     Intent activate = new Intent(this, MyService.class); 
     PendingIntent alarmIntent = PendingIntent.getService(this, 0, activate, 0); 
     alarms = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
     cal.set(Calendar.HOUR_OF_DAY, 00); 
     cal.set(Calendar.MINUTE, minute.minute); 
     cal.set(Calendar.SECOND, 00); 
     alarms.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmIntent); 
     Toast.makeText(this, "checkOnStart", Toast.LENGTH_LONG).show(); 

     return Service.START_STICKY; 
    } 
} 

В моей деятельности:

Intent activate = new Intent(this, MyService.class); 
startService(activate); 

я пытаюсь использовать службы переднего плана это не помогает мне Но когда я убиваю приложение службы закрыто, то, что я должен сделать, чтобы служба работала после того, как приложение было убито?

+0

Это код всего обслуживания? Метод запуска выполняется, а затем возвращается ... Я не понимаю, почему он должен оставаться в живых. Кажется, что он закончился, потому что он выполнил свои задачи ... – W0rmH0le

+0

, но я возвращаюсь Service.START_STICKY –

+0

Вы правы. Процесс должен быть перезапущен. Кроме того, вы внедрили onStartCommand(), поэтому вы несете ответственность за остановку службы (а не системы). В любом случае, не могли бы вы поделиться всем кодом? И как вы обнаружили, что служба была уничтожена? У меня также есть сервис. В моем случае у меня есть приемник Broadcast, и они продолжают получать сообщения даже после уничтожения Main Thread ... Поделитесь всем кодом или объясните, что вы пытаетесь сделать в этой службе ... Я увидел, что вы запустили диспетчер аварийных сообщений. – W0rmH0le

ответ

0

Вы можете использовать службу переднего плана. Check tutorial this и this

+0

Я пытаюсь это сделать, это не помогает мне –

+0

вы добавили код для уведомления в методе onStartCommand? –

+0

int icon = R.mipmap.icon; долгое время = System.currentTimeMillis(); Уведомление о уведомлении = новое Notification.Builder (this) .setContentTitle («Title»). setContentText («Текст»). setSmallIcon (R.mipmap.icon) .build(); Intent notificationIntent = новый Intent (this, MainActivity.class); notificationIntent.addFlags (Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); PendingIntent contentIntent = PendingIntent.getActivity (это, 0, notificationIntent, 0); startForeground (12312, уведомление); Я добавил это в свой код в методе onstart –