Android известие на определена дата

Трябва да създам приложение, в което трябва да задам дата и на тази конкретна дата в 9 часа трябва да дам известие. Кой е най-простият метод за това? Искам приложението да работи дори когато приложението бъде убито така или иначе. Решение ли е AlarmManager?


person Buze    schedule 29.03.2012    source източник
comment
имах предвид, че все още мога да получа това известие, без да влизам отново в приложението   -  person Buze    schedule 29.03.2012
comment
OP очевидно означаваше, ако той/тя извади батерията и я смени.   -  person Ojonugwa Jude Ochalifu    schedule 09.07.2015


Отговори (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“ с вашето време за събуждане.

person Wajdi Hh    schedule 29.03.2012

Трябва да използвате AlarmManager, за да зададете аларма от тип RTC_WAKEUP.

От документи:

Когато алармата изгасне, намерението, което е било регистрирано за нея, се излъчва от системата, автоматично стартира целевото приложение, ако то вече не работи. Регистрираните аларми се запазват, докато устройството е в режим на заспиване (и могат по желание да събудят устройството, ако се задействат през това време), но ще бъдат изчистени, ако бъде изключено и рестартирано.

Така че това означава, че:

  • Не се нуждаете от непрекъснато работеща услуга, за да постигнете това.
  • Може да се нуждае от BroadcastListener, който слуша събитието BOOT_COMPLETE, за да регистрира отново алармата след рестартиране на устройството.
person Dheeraj Vepakomma    schedule 29.03.2012

Трябва да създадете приложението като услуга за Android.

Услугата е компонент на приложение, който може да изпълнява дълготрайни операции във фонов режим и не предоставя потребителски интерфейс. Друг компонент на приложението може да стартира услуга и тя ще продължи да работи във фонов режим, дори ако потребителят превключи към друго приложение. Освен това компонент може да се свърже с услуга, за да взаимодейства с нея и дори да осъществява междупроцесна комуникация (IPC). Например, дадена услуга може да обработва мрежови транзакции, да възпроизвежда музика, да извършва I/O на файлове или да взаимодейства с доставчик на съдържание, всичко това от заден план.

person Matt    schedule 29.03.2012

Мениджърът на аларми е решението предполагам. трябва да настроите мениджъра на аларми за определено време и след това да го накарате да извика известието при неговото стартиране. и това трябва да се реализира в рамките на услуга. надявам се да помогна.

person Anurag Ramdasan    schedule 29.03.2012