All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.koushikdutta.async.future.HandlerFuture Maven / Gradle / Ivy

package com.koushikdutta.async.future;

import android.os.Handler;
import android.os.Looper;

/**
 * Created by koush on 12/25/13.
 */
public class HandlerFuture extends SimpleFuture {
    Handler handler;

    public HandlerFuture() {
        Looper looper = Looper.myLooper();
        if (looper == null)
            looper = Looper.getMainLooper();
        handler = new Handler(looper);
    }

    @Override
    public SimpleFuture setCallback(final FutureCallback callback) {
        FutureCallback wrapped = new FutureCallback() {
            @Override
            public void onCompleted(final Exception e, final T result) {
                if (Looper.myLooper() == handler.getLooper()) {
                    callback.onCompleted(e, result);
                    return;
                }

                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onCompleted(e, result);
                    }
                });
            }
        };
        return super.setCallback(wrapped);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy