post : post faz com que o Runnable seja adicionado à fila de mensagens,
Executável: representa um comando que pode ser executado. Frequentemente usado para executar código em um Thread diferente.
run () : inicia a execução da parte ativa do código da classe. Este método é chamado quando um thread é iniciado que foi criado com uma classe que implementa Runnable.
getView().post(new Runnable() {
@Override
public void run() {
getView().startAnimation(a);
}
});
código :getView().startAnimation(a);
em seu código,
post faz com que o Runnable (o código será executado em um thread diferente) adicione a fila de mensagens.
Portanto, startAnimation será acionado em uma nova thread quando for buscado em messageQueue
[EDITAR 1]
Por que usamos um novo thread em vez de UI thread (thread principal)?
Tópico da interface do usuário:
Quando o aplicativo é iniciado, Ui Thread é criado automaticamente
é responsável por despachar os eventos para os widgets apropriados e isso inclui os eventos de desenho.
É também o tópico com o qual você interage com widgets Android
Por exemplo, se você tocar no botão a na tela, o encadeamento da IU despacha o evento de toque para o widget que, por sua vez, define seu estado pressionado e posta uma solicitação de invalidação na fila de eventos. O encadeamento da IU retira a solicitação e notifica o widget para se redesenhar.
O que acontece se um usuário pressionar um botão que fará longOperation?
((Button)findViewById(R.id.Button1)).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
final Bitmap b = loadImageFromNetwork();
mImageView.setImageBitmap(b);
}
});
A IU congela. O programa pode até travar.
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap b = loadImageFromNetwork();
mImageView.setImageBitmap(b);
}
}).start();
}
Ele quebra a regra do Android de nunca atualizar a IU diretamente do thread de trabalho
O Android oferece várias maneiras de acessar o thread de IU de outros threads.
- Activity.runOnUiThread (Executável)
- View.post (executável)
- View.postDelayed (executável, longo)
- Handler
Como abaixo,
View.post (executável)
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap b = loadImageFromNetwork();
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(b);
}
});
}
}).start();
}
Handler
final Handler myHandler = new Handler(Looper.getMainLooper());
(new Thread(new Runnable() {
@Override
public void run() {
final Bitmap b = loadImageFromNetwork();
myHandler.post(new Runnable() {
@Override
public void run() {
mImageView.setImageBitmap(b);
}
});
}
})).start();
}

Para mais informações
http://android-developers.blogspot.com/2009/05/pellence-threading.html
http://www.aviyehuda.com/blog/2010/12/20/android-multithreading-in-a-ui-environment/