Well, my code uses handlers, which are specific to android, so at least I thought I'd post my code, so anyone with any comments on this android-specific code feel free to drop me a line.
John Goche class TimeStampedMessage { TimeStampedMessage(Handler handler, long when, int what) { this.handler = handler; this.when = when; this.what = what; this.timeStamp = System.nanoTime(); } static void pauseTimers() { for (int k = 0; k < TimeStampedMessage.timeStampedMessages.size(); k++) { TimeStampedMessage timeStampedMessage = TimeStampedMessage.timeStampedMessages.get(k); long oldTimeStamp = timeStampedMessage.timeStamp; long newTimeStamp = System.nanoTime(); System.out.println("When1: " + timeStampedMessage.when); System.out.println(oldTimeStamp); System.out.println(newTimeStamp); timeStampedMessage.when -= (newTimeStamp - oldTimeStamp) / 1000000L; System.out.println("When2: " + timeStampedMessage.when); timeStampedMessage.handler.removeMessages(timeStampedMessage.what); } } static void resumeTimers() { for (int k = 0; k < TimeStampedMessage.timeStampedMessages.size(); k++) { Handler handler = TimeStampedMessage.timeStampedMessages.get(k).handler; long when = TimeStampedMessage.timeStampedMessages.get(k).when; int what = TimeStampedMessage.timeStampedMessages.get(k).what; TimeStampedMessage.timeStampedMessages.get(k).timeStamp = System.nanoTime(); Message message = handler.obtainMessage(what); handler.sendMessageDelayed(message, when); System.out.println("resuming: when:" + when); } } static void unloadMessages(Handler handler, int what) { for (int k = 0; k < TimeStampedMessage.timeStampedMessages.size(); k++) if (TimeStampedMessage.timeStampedMessages.get(k).handler == handler && TimeStampedMessage.timeStampedMessages.get(k).what == what) TimeStampedMessage.timeStampedMessages.remove(k); } Handler handler; long timeStamp; long when; int what; static List<TimeStampedMessage> timeStampedMessages = new ArrayList<TimeStampedMessage>(); } abstract class WorldState { public abstract void enter(World world); public abstract void timerExpired(World world, Message msg); public abstract void update(World world, float deltaTime); public abstract void exit(World world); public void sendMessage(World world, long numMillis, int what) { Message message = world.worldHandler.obtainMessage(what); world.worldHandler.sendMessageDelayed(message, numMillis); TimeStampedMessage timeStampedMessage = new TimeStampedMessage(world.worldHandler, numMillis, what); TimeStampedMessage.timeStampedMessages.add(timeStampedMessage); } public void removeMessages(World world, int what) { TimeStampedMessage.unloadMessages(world.worldHandler, what); world.worldHandler.removeMessages(World.WorldHandler.MESSAGE_WHAT_PRESENTATION_GHOST_ESCAPE); } } Regards, John Goche -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en