That sounds like a good idea! Be aware that will make the callback run outside of your lock (Which seems ok here.) It's also possible your caller isn't in the UI, so if you use runOnUiThread be sure to note it.

There is a possible downside to using the UI thread, which is you may need to keep a reference to application objects around, and these can go stale or get wacky as the app is torn down and recreated.

An alternative might be to spawn an isolated thread (or keep your own thread pool handy).