// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) package com.galaxy.meetup.client.android.service; import android.content.Intent; import android.os.Handler; import android.os.Looper; import java.util.Queue; import java.util.concurrent.LinkedBlockingQueue; public final class ServiceThread extends Thread { public static interface IntentProcessor { public abstract void onServiceThreadEnd(); public abstract void processIntent(Intent intent); } public ServiceThread(Handler handler, String s, IntentProcessor intentprocessor) { mMainHandler = handler; setName((new StringBuilder()).append(s).append(this).toString()); mIntentProcessor = intentprocessor; } public final void put(Intent intent) { mQueue.add(intent); if (mThreadHandler != null) mThreadHandler.post(mProcessQueueRunnable); } public final void quit() { if (mThreadHandler != null) mThreadHandler.getLooper().quit(); if (mQueue.size() > 0) mQueue.clear(); } public final void run() { Looper.prepare(); mThreadHandler = new Handler(); mMainHandler.post(new Runnable() { public final void run() { mThreadHandler.post(mProcessQueueRunnable); } }); Looper.loop(); if (mIntentProcessor != null) mIntentProcessor.onServiceThreadEnd(); } private IntentProcessor mIntentProcessor; private final Handler mMainHandler; private final Runnable mProcessQueueRunnable = new Runnable() { public final void run() { do { Intent intent = (Intent) mQueue.poll(); if (intent == null) break; try { if (mIntentProcessor != null) mIntentProcessor.processIntent(intent); } catch (Throwable throwable) { Thread.getDefaultUncaughtExceptionHandler() .uncaughtException(Thread.currentThread(), throwable); } } while (true); } }; private final Queue mQueue = new LinkedBlockingQueue(); private Handler mThreadHandler; }