Вот довольно самодостаточный пример. После 5 секунд появляется красная кнопка.
public void SetAlarm()
{
final Button button = buttons[2]; // replace with a button from your own UI
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override public void onReceive( Context context, Intent _ )
{
button.setBackgroundColor( Color.RED );
context.unregisterReceiver( this ); // this == BroadcastReceiver, not Activity
}
};
this.registerReceiver( receiver, new IntentFilter("com.blah.blah.somemessage") );
PendingIntent pintent = PendingIntent.getBroadcast( this, 0, new Intent("com.blah.blah.somemessage"), 0 );
AlarmManager manager = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
// set alarm to fire 5 sec (1000*5) from now (SystemClock.elapsedRealtime())
manager.set( AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000*5, pintent );
}
Помните, что AlarmManager срабатывает даже тогда, когда приложение не работает. Если вы вызовете эту функцию и нажмите кнопку «Домой», подождите 5 секунд, а затем вернитесь в свое приложение, кнопка станет красной.
Я не знаю, какое поведение вы бы получили, если приложение совсем не в памяти, поэтому будьте осторожны с тем, какое состояние вы пытаетесь сохранить.