you may know about [Google Cloud Messaging](https://developer.android.com/google/gcm/client.html) 

The problem is that when a gcm message triggers by the server, my application receives a bundle from google play services, this happen at `GcmBroadcastReceiver.java`. Here i can send this data to other classes in order to append some info from the server.. well. I got stuck when i try to update, for example, some views in the UI thread.

HOW I CAN DO THIS?

Imagine that `MainActivity.java` is the UI thread when i declare the views, etc. 

I tried to create here a public static method which can be called directly by `GcmBroadcastReceiver.java` by this way: `MainActivity.*updateUI*(args..)`, but it throws this exception:

```
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

```

Can anyone try to explain me this? i also know about asyncTask but i cant imagine how it works. I also find some pages explaining events that are fired by the UI thread it self like runnables that do some task in background. Im searching something like this: 

```
MainActivity extends Activity{

    ...
    protected void onCreate(Bundle blabla)..{

    setContentView(R.layout.blabla);

    registerSomeEvent(this);

    }

    private void handleEvent(Bundle ...){

    ... do stuff with the data provided in the UI thread

    }

} 

```

And here at `GcmBroadcastReceiver`, when gcm push some data, trigger that magic event in order to perform updates at the UI thread with some views like `ListViews` or `TextView`