Отдельный компонент "EventCountdownTimer"
На мой взгляд, это лучшая реализация, которую вы могли бы иметь в вашем случае.Для передачи информации обратно вашей деятельности вы можете рассмотреть возможность использования интерфейса, подобного следующему.
public interface TimerListener {
void onTimerResponse(String response);
}
Измените ваш EventCountdownTimer
, чтобы иметь конструктор, который принимает TimerListener
в качестве параметра, и переопределите метод onTimerResponse
в вашей деятельности.Теперь из вашего EventCountdownTimer
, например, когда вы пытаетесь связаться со своей деятельностью вместе с сообщением, вы можете просто вызвать функцию onTimerResponse(msgToDeliver)
.
Следовательно, ваш EventCountdownTimer
должен выглядеть примерно так.
public class EventCountdownTimer {
public static Context context;
public static TimerListener listener;
public EventCountdownTimer(Context context, TimerListener listener) {
this.context = context;
this.listener = listener;
}
public startCountdown() {
// Start the count down here
// ... Other code
// When its time to post some update to your activity
listener.onTimerResponse(msgToDeliver);
}
}
И из вашей деятельности инициализируйте EventCountdownTimer
, как показано ниже.
EventCountdownTimer timer = new EventCountdownTimer(this, new TimerListener() {
@Override
public void onTimerResponse(String message) {
// Do something with the message data
// Update your UI maybe
}
});
Я думаю, что вы уже привели веские причины для того, чтобы не использовать другие варианты, которые вы упомянули.