diff options
author | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2015-01-04 00:21:01 -0800 |
---|---|---|
committer | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2015-01-04 00:21:01 -0800 |
commit | 8aa7e6dc95a3794d92b248e172df1b4a1c8a5271 (patch) | |
tree | 19d12d60e67b0fe56e3356733b5e0c5218633009 /src/java/com/libmailcore/MainThreadUtils.java | |
parent | 631c541e7b5ef5ac0930e6b1ace7afab0c52b298 (diff) |
Added java bindings for Android
Diffstat (limited to 'src/java/com/libmailcore/MainThreadUtils.java')
-rw-r--r-- | src/java/com/libmailcore/MainThreadUtils.java | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/java/com/libmailcore/MainThreadUtils.java b/src/java/com/libmailcore/MainThreadUtils.java new file mode 100644 index 00000000..00a9ead2 --- /dev/null +++ b/src/java/com/libmailcore/MainThreadUtils.java @@ -0,0 +1,64 @@ +package com.libmailcore; + +import android.os.Handler; +import android.os.Looper; +import android.util.Log; +import java.util.HashMap; + +public class MainThreadUtils { + private static volatile MainThreadUtils instance = new MainThreadUtils(); + private Handler handler; + private HashMap<Long, Runnable> runnablesForIdentifiers = new HashMap<Long, Runnable>(); + + static public MainThreadUtils singleton() { + return instance; + } + + // private constructor + private MainThreadUtils() { + System.loadLibrary("MailCore"); + handler = new Handler(Looper.getMainLooper()); + setupNative(); + } + + private native void setupNative(); + + private native void runIdentifier(long identifier); + private native void runIdentifierAndNotify(long identifier); + + private void runOnMainThread(final long identifier) { + handler.post(new Runnable() { + @Override + public void run() { + runIdentifier(identifier); + } + }); + } + + private void runOnMainThreadAndWait(final long identifier) { + handler.post(new Runnable() { + @Override + public void run() { + runIdentifierAndNotify(identifier); + } + }); + } + + private void runAfterDelay(final long identifier, int milliseconds) { + Runnable runnable = new Runnable() { + @Override + public void run() { + runnablesForIdentifiers.remove(new Long(identifier)); + runIdentifier(identifier); + } + }; + runnablesForIdentifiers.put(new Long(identifier), runnable); + handler.postDelayed(runnable, milliseconds); + } + + private void cancelDelayedRun(final long identifier) { + Runnable runnable = runnablesForIdentifiers.get(new Long(identifier)); + runnablesForIdentifiers.remove(new Long(identifier)); + handler.removeCallbacks(runnable); + } +} |