I agree. The method has no real business being on an activity though right? It only promotes bad code.
How would you end up on a background thread on an activity? Perhaps you are using your activity to ferry calls from model object A to model object B and object B requires you to be on the main thread. Wouldn't you be better gluing them together with another component. I would assert this is a rare case and runOnUiThread is a convenience method for this case, but how convenient is it really compared to the inconvenient mistakes it causes people to make. At the very least, why is it not a method on Context? I would say its presence on Activity does imply it is intended for making changes to views. In fact, here's a blog from 2009 telling you to do just that: http://android-developers.blogspot.co.uk/2009/05/painless-threading.html On Wednesday, 10 June 2015 08:24:27 UTC+1, Doug wrote: > > Calling runOnUiThread doesn't necessarily imply that you need to make > changes to an activity or its views. If you just need to make sure some > code is executed on the main thread for whatever reason, then it's OK to > use this. It's morally equivalent to scheduling a Runnable on a Handler > attached to the main thead, and there could be any number of reasons why > you need to use the main thread instead of another thread. > > However, if you do need to make changes to an activity or its views, this > is not the best method to call. There are other mechanisms like Loaders > that are probably better solutions for the particular problem. > > If you just need to schedule a unit of work to run on the main thread > without respect to any activity or view, I think this should be seen as a > reasonable convenience to do so. It's just too bad that runOnUiThread this > is a method on Activity because that could be misleading to the caller. > > Doug > > > On Tuesday, June 9, 2015 at 11:39:13 AM UTC-7, Sam Duke wrote: >> >> Due to the nature of config changes, the runnable submitted to >> runOnUiThread may be executed after an activity has been destroyed (i.e. on >> a stale activity). Therefore this API can cause all sorts of subtle bugs >> with config changes and events never reaching the UI. I can't think of a >> single case where it would be safe to use this. You should already have hit >> the main thread by the time you are doing anything inside the runnable... I >> think all it does is encourage poor patterns... >> >> Given this, is it not time to deprecate this API? >> >> >> -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en --- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

