diff --git a/src/Mono.Android/Android.OS/Handler.cs b/src/Mono.Android/Android.OS/Handler.cs index f438614eb43..40634af756f 100644 --- a/src/Mono.Android/Android.OS/Handler.cs +++ b/src/Mono.Android/Android.OS/Handler.cs @@ -13,27 +13,52 @@ public Handler (Action handler) public bool Post (Action action) { - return Post (new Java.Lang.Thread.RunnableImplementor (action, true)); + var runnable = new Java.Lang.Thread.RunnableImplementor (action, removable: true); + if (Post (runnable)) { + return true; + } + runnable.Dispose (); + return false; } public bool PostAtFrontOfQueue (Action action) { - return PostAtFrontOfQueue (new Java.Lang.Thread.RunnableImplementor (action, true)); + var runnable = new Java.Lang.Thread.RunnableImplementor (action, removable: true); + if (PostAtFrontOfQueue (runnable)) { + return true; + } + runnable.Dispose (); + return false; } public bool PostAtTime (Action action, long uptimeMillis) { - return PostAtTime (new Java.Lang.Thread.RunnableImplementor (action, true), uptimeMillis); + var runnable = new Java.Lang.Thread.RunnableImplementor (action, removable: true); + if (PostAtTime (runnable, uptimeMillis)) { + return true; + } + runnable.Dispose (); + return false; } public bool PostAtTime (Action action, Java.Lang.Object token, long uptimeMillis) { - return PostAtTime (new Java.Lang.Thread.RunnableImplementor (action, true), token, uptimeMillis); + var runnable = new Java.Lang.Thread.RunnableImplementor (action, removable: true); + if (PostAtTime (runnable, token, uptimeMillis)) { + return true; + } + runnable.Dispose (); + return false; } public bool PostDelayed (Action action, long delayMillis) { - return PostDelayed (new Java.Lang.Thread.RunnableImplementor (action, true), delayMillis); + var runnable = new Java.Lang.Thread.RunnableImplementor (action, removable: true); + if (PostDelayed (runnable, delayMillis)) { + return true; + } + runnable.Dispose (); + return false; } public void RemoveCallbacks (Action action) diff --git a/src/Mono.Android/Android.Views/View.cs b/src/Mono.Android/Android.Views/View.cs index 58de9a2c027..5ef341f243b 100644 --- a/src/Mono.Android/Android.Views/View.cs +++ b/src/Mono.Android/Android.Views/View.cs @@ -49,12 +49,22 @@ public T RequireViewById< public bool Post (Action action) { - return Post (new Java.Lang.Thread.RunnableImplementor (action, true)); + var runnable = new Java.Lang.Thread.RunnableImplementor (action, removable: true); + if (Post (runnable)) { + return true; + } + runnable.Dispose (); + return false; } public bool PostDelayed (Action action, long delayMillis) { - return PostDelayed (new Java.Lang.Thread.RunnableImplementor (action, true), delayMillis); + var runnable = new Java.Lang.Thread.RunnableImplementor (action, removable: true); + if (PostDelayed (runnable, delayMillis)) { + return true; + } + runnable.Dispose (); + return false; } public bool RemoveCallbacks (Action action)