No, it is not safe.  Don't do this.

The documentation is very clear about this:
http://developer.android.com/reference/android/view/View.html

"Note: The entire view tree is single threaded. You must always be on the
UI thread when calling any method on any view."

This wasn't written to mislead people into thinking that it works a
different way than it does: it is because it is true, the view hierarchy is
single-threaded, and it is explicitly not designed to be used from multiple
threads.

If you think that not seeing checks about which thread calls are being made
on indicates that something is safe to use from multiple threads, you
should probably stop whatever multi-threaded programming you are doing and
rethink it. :}

Even instantiating a view from one thread and attaching it to a view
hierarchy in another is not safe, because many views will internally create
Handler objects that are bound to whatever thread they were created on,
causing you to have parts of your view hierarchy running on the wrong
thread with bad results.

On Tue, Jun 26, 2012 at 2:00 PM, Tamás Kovács
<falcon.firebre...@gmail.com>wrote:

> It works seamlessly like a charm. It would be nice to know if this is
> supported/acceptable generally.
>
> I hope we'll get an answer from the Android guys/ladies.
>
>
> On Jun 26, 10:53 pm, Justin Anderson <magouyaw...@gmail.com> wrote:
> > I'm not sure, but I doubt it...  Have you tried it? Did it work?
> >
> > Thanks,
> > Justin Anderson
> > MagouyaWare Developerhttp://sites.google.com/site/magouyaware
> >
> > On Tue, Jun 26, 2012 at 2:27 PM, Tamás Kovács
> > <falcon.firebre...@gmail.com>wrote:
> >
> >
> >
> >
> >
> >
> >
> > > I know that the UI elements (View hierarchy) may only be manipulated
> > > from the UI thread. For a background operation, the AsyncTask can be
> > > used, which offers event handers to reach the UI thread.
> >
> > > To be brief, is it allowed to instantiate a View (tied to
> > > getApplicationContext()) in a non-UI thread? This custom View
> > > descendant -- once instantiated -- is added to the view hierarchy from
> > > the UI thread. So only the constructor call is done inside an
> > > Asynctask.doInBackground; its attaching (addView(...))to the
> > > Activity's root layout hierarchy is still done in the UI thread.
> >
> > > (I pre-instantiate the View in an asynctask because when it's needed
> > > in an Activity, it must be instantly displayed.)
> >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to
> android-developers@googlegroups.com
> > > To unsubscribe from this group, send email to
> > > android-developers+unsubscr...@googlegroups.com
> > > 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 post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>



-- 
Dianne Hackborn
Android framework engineer
hack...@android.com

Note: please don't send private questions to me, as I don't have time to
provide private support, and so won't reply to such e-mails.  All such
questions should be posted on public forums, where I and others can see and
answer them.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to