В каждом из ваших прослушивателей кликов экономьте время, когда была нажата последняя кнопка:
private long lastClickTimestamp;
private Handler handler = new Handler();
public void onCreate( Bundle saved ) {
BackgroundJob job = new BackgroundJob();
handler.postDelayed( job, SECONDS_TO_WAIT * 1000 );
button1.setClickListener( new OnClickListener() {
public void onClick( View view ) {
lastClickTimestamp = System.currentTimeInMillis();
// do the listener logic for button 1 here.
}
});
button2.setClickListner( new OnClickListener() {
public void onClick( View view ) {
lastClickTimestamp = System.currentTimeInMillis();
// do the listener logic for button 2 here.
}
});
// repeat that for all 10 buttons.
}
Теперь более умный разработчик создаст многократно используемый базовый класс, который обрабатывает установку метки времени один раз, а затем повторно использует этот базовый классв каждой из 10 кнопок.Но это зависит от вас.Тогда фоновое задание будет выглядеть следующим образом:
public class BackgroundJob implements Runnable {
private boolean done = false;
// meanwhile in job:
public void run() {
if( lastClickTimestamp > 0 && System.currentTimeInMillis() - lastClickTimestamp > SECONDS_TO_WAIT * 1000 ) {
// let's do that job!
}
if( !done ) {
// reschedule us to continue working
handler.postDelayed( this, SECONDS_TO_WAIT * 1000 );
}
}
}
Если вам нужно использовать службу, вы можете отправить в службу уведомление о том, что была нажата кнопка, тогда служба может отслеживать время, когда это произошло,Я бы не стал использовать сервис для этого, потому что для воспроизведения анимации или звука не нужно выживать, если приложение помещено в фоновый режим или убито.Службы предназначены для таких вещей, как воспроизведение музыки, когда кто-то делает что-то другое, приложения для чата или вещи, которые должны работать в фоновом режиме, когда пользователь не взаимодействует с приложением.То, что вы описываете, может быть сделано, как я показал, потому что когда пользователь получает телефонный звонок или текстовое сообщение, он покидает ваше приложение, и анимация или звук, который вы играете, вероятно, тоже должны прекратиться.Довольно легко сделать это с опцией Handler, которую я показал.Сложнее, но выполнимо, с услугой.