Трябва да създам приложение, в което трябва да задам дата и на тази конкретна дата в 9 часа трябва да дам известие. Кой е най-простият метод за това? Искам приложението да работи дори когато приложението бъде убито така или иначе. Решение ли е AlarmManager?
Android известие на определена дата
Отговори (4)
За да планирате действие, можете да използвате AlarmManager
Опитайте този код, той работи за мен:
1 / Декларирайте КЛАСА на BroadcastReceiver, за да стартирате действието, този клас може да бъде във вашата дейност или извън друг java файл
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(context, intent.getStringExtra("param"),Toast.LENGTH_SHORT).show();
}
}
2/ Във вашия метод Oncreate поставете този код
AlarmManager alarms = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
Receiver receiver = new Receiver();
IntentFilter filter = new IntentFilter("ALARM_ACTION");
registerReceiver(receiver, filter);
Intent intent = new Intent("ALARM_ACTION");
intent.putExtra("param", "My scheduled action");
PendingIntent operation = PendingIntent.getBroadcast(this, 0, intent, 0);
// I choose 3s after the launch of my application
alarms.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000, operation) ;
Стартирайте приложението си, след 3 секунди ще се появи тост, така че можете да промените „System.currentTimeMillis()+3000“ с вашето време за събуждане.
Трябва да използвате AlarmManager
, за да зададете аларма от тип RTC_WAKEUP
.
От документи:
Когато алармата изгасне, намерението, което е било регистрирано за нея, се излъчва от системата, автоматично стартира целевото приложение, ако то вече не работи. Регистрираните аларми се запазват, докато устройството е в режим на заспиване (и могат по желание да събудят устройството, ако се задействат през това време), но ще бъдат изчистени, ако бъде изключено и рестартирано.
Така че това означава, че:
- Не се нуждаете от непрекъснато работеща услуга, за да постигнете това.
- Може да се нуждае от
BroadcastListener
, който слуша събитието BOOT_COMPLETE, за да регистрира отново алармата след рестартиране на устройството.
Трябва да създадете приложението като услуга за Android.
Услугата е компонент на приложение, който може да изпълнява дълготрайни операции във фонов режим и не предоставя потребителски интерфейс. Друг компонент на приложението може да стартира услуга и тя ще продължи да работи във фонов режим, дори ако потребителят превключи към друго приложение. Освен това компонент може да се свърже с услуга, за да взаимодейства с нея и дори да осъществява междупроцесна комуникация (IPC). Например, дадена услуга може да обработва мрежови транзакции, да възпроизвежда музика, да извършва I/O на файлове или да взаимодейства с доставчик на съдържание, всичко това от заден план.
Мениджърът на аларми е решението предполагам. трябва да настроите мениджъра на аларми за определено време и след това да го накарате да извика известието при неговото стартиране. и това трябва да се реализира в рамките на услуга. надявам се да помогна.