Back to project page Resonos-Android-Framework.
The source code is released under:
Apache License
If you think the Android project Resonos-Android-Framework listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.resonos.apps.library.util; /*from w w w. j a v a2s. c o m*/ import java.util.ArrayList; /** * This class manages a task queue of events to be run at discrete times. * @author Chris */ public class LifecycleTaskQueue { /** * This class represents a task to be run once after an event. */ private class LifecycleTask { private Runnable _task; private Enum<?> _event; /** * Create the task * @param task : a runnable representing the action * @param event : an enum representing the trigger event */ public LifecycleTask(Runnable task, Enum<?> event) { _task = task; _event = event; } /** * Determines if an event matches this task's trigger * @param event : the event * @return true if it matches */ public boolean matches(Enum<?> event) { return _event.equals(event); } /** * Run this task's runnable. */ public void run() { _task.run(); } } private ArrayList<LifecycleTask> mQueuedTasks = new ArrayList<LifecycleTask>(); private ArrayList<LifecycleTask> tTasks = new ArrayList<LifecycleTask>(); /** * Add a task to run once after an event. * @param event : an enum tagging the event * @param task : the task to be run */ public void addTask(Enum<?> event, Runnable task) { mQueuedTasks.add(new LifecycleTask(task, event)); } /** * Run all tasks that have been queued for a certain event. * @param event : the event that has occurred */ public void runEvent(Enum<?> event) { tTasks.clear(); LifecycleTask t; for (int i = 0; i < mQueuedTasks.size(); i++) { t = mQueuedTasks.get(i); if (t.matches(event)) t.run(); else tTasks.add(t); } mQueuedTasks.clear(); mQueuedTasks.addAll(tTasks); } /** * Clear all pending tasks. */ public void empty() { mQueuedTasks.clear(); tTasks.clear(); } }