2017-02-05 11 views
0

У меня есть несколько диспетчеров AlarmManager внутри класса Service. Я устанавливаю каждый AlarmManager в другое время, и я могу заставить его повторить использование setRepeating(). Я запускаю свое обслуживание из Activity. Хорошо, теперь для моего реального вопроса.AlarmManager как услуга, как я могу получить сигнал тревоги для повторения?

Everyday, в эти времена комплект изменение. И в моей деятельности я получаю новый экземпляр этих таймингов (не изменяя его напрямую, а выполняя серию вычислений, то есть вызывая метод). И, получив новый экземпляр разного времени, я хочу знать, как я могу обновить и перезапустить службу Alarm с этими новыми моментами, даже если приложение закрыто?

ответ

0

Попробуйте это,

public class MainActivity extends AppCompatActivity { 

    private PendingIntent pendingIntent; 
    private AlarmManager manager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // Retrieve a PendingIntent that will perform a broadcast 
     Intent alarmIntent = new Intent(this, AlarmReceiver.class); 
     pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); 
    } 
    public void startAlarm(View view) { 
     manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
     int interval = 3000; // 3 seconds 

     manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent); 
     Log.e("System.currentTime", "" + System.currentTimeMillis()); 
     Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show(); 
    } 

    public void cancelAlarm(View view) { 
     if (manager != null) { 
      manager.cancel(pendingIntent); 
      Toast.makeText(this, "Alarm Canceled", Toast.LENGTH_SHORT).show(); 
     } 

    } 
} 

и это ваш AlarmReceiver

/** 
* Created by Techno Blogger on 1/2/17. 
*/ 

public class AlarmReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // For our recurring task, we'll just display a message 
     Toast.makeText(arg0, "I'm running", Toast.LENGTH_SHORT).show(); 

    } 

} 

и не забудьте упомянуть об этом в своем Manifest.xml

<receiver android:name=".AlarmReceiver"></receiver> 

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

  • Нет связанных вопросов^_^