I have an activity that sets a custom created view “onCreated” and a Thread is started, this thread cycles every 23ms and “invalidates” this view so it’s onDraw is called almost always.
This view continues in screen until a user clicks on it (onTouchEvent) and view does some proceses and when ready a public flag ins enabled so the activity “knows” when the view was activated and has made it’s proceses, in this moment the activity should change it’s view to another one custom created, the problem is that because the flag checking is done in the run method of the thread the activity sends a “CallFromWrongThreadException”, this is because as far as I understand the “changing” is in another thread (not UI).
I have set the runOnUiThread to overpass this and the srceen goes completly black.
Also I have tried to set the activity to a framelayout in which I add both views at begging and the thread changes visibiliity of the views, no success at all.
All view manipulation must happen on the UI thread. There are a few ways to do this. One is to use AsyncTask to perform your background work, as it has means to run code on the UI thread after the background work has completed.
Another option is to post the code you want to run through the view itself, like this:
This method would work well for toggling the visibility of an existing view.
This is a good overview of these methods: http://android-developers.blogspot.com/2009/05/painless-threading.html