Dúvida em Thread no android

Boa noite pessoal.

Estou com uma classe de cadastro simples apenas nome e endereço e estou fazendo alguns testes com ela.
Estou utilizando a classe ProgressDialog e uma thread para controlar. A mensagem de Aguarde, Cadastrando informações está fixa na tela não obedecendo a thread
Não estou conseguindo fazer funcionar segue o código para ver se alguém me da uma luz.

package com.analistafinanceiromobileandroid.entrada;

import com.analistafinanceiromobileandroid.principal.R;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Cadastro extends Activity implements Runnable{

	private ProgressDialog pd;
	private String valor;
	private EditText edtxtNomeCadastro;
	private EditText edtxtEmailCadastro;

	@Override
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.cadastro);
		
		final Button btnCadastrarCadastrado = (Button)findViewById(R.id.btnCadastrarCadastro);
		edtxtNomeCadastro = (EditText)findViewById(R.id.edtxtNomeCadastro);
		edtxtEmailCadastro = (EditText)findViewById(R.id.edtxtEmailCadastro);
		btnCadastrarCadastrado.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {
				pd = ProgressDialog.show(Cadastro.this, "Aguarde.", "Cadastrando informações", true, false);
				Thread t = new Thread(Cadastro.this);
				t.start();
			}
		});
	}

	public void run() {
		valor = edtxtNomeCadastro.getText().toString();
		h.sendEmptyMessage(0);
	}

	private Handler h = new Handler(){

		public void handlerMessage(Message msg){
			pd.dismiss();
		}
	};
}

Obrigado.

Segue a parte de erro do LogCat que eu esqueci de por para facilitar ou não rsrs.

10-28 11:57:57.816: I/ActivityManager(72):   Force finishing activity HistoryRecord{406940b8 com.analistafinanceiromobileandroid.principal/.Principal}
10-28 11:57:57.836: I/WindowManager(72): WIN DEATH: Window{406c76f8 com.analistafinanceiromobileandroid.principal/com.analistafinanceiromobileandroid.principal.Principal paused=true}
10-28 11:57:57.856: E/InputDispatcher(72): channel '407e5120 com.analistafinanceiromobileandroid.principal/com.analistafinanceiromobileandroid.entrada.Cadastro (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
10-28 11:57:57.856: E/InputDispatcher(72): channel '407e5120 com.analistafinanceiromobileandroid.principal/com.analistafinanceiromobileandroid.entrada.Cadastro (server)' ~ Channel is unrecoverably broken and will be disposed!
10-28 11:57:57.916: I/WindowManager(72): WIN DEATH: Window{407e5120 com.analistafinanceiromobileandroid.principal/com.analistafinanceiromobileandroid.entrada.Cadastro paused=true}
10-28 11:57:57.946: I/WindowManager(72): WIN DEATH: Window{4058b948 Aguarde. paused=true}
10-28 11:57:57.996: E/InputDispatcher(72): Received spurious receive callback for unknown input channel.  fd=184, events=0x8

Olá
O nome do método não é handlerMessage e sim handleMessage.
Usa sempre @Override

Olá,

Cara alterei o nome do método e utilizei @Override nos métodos handleMessage, mas ainda está contínuo o progressdialog.
Obs: @Override da erro se utilizar nos métodos run e onClick.
Obrigado.

Cara você tem que fechar o dialog dentro da thread. O problema que é a thread não faz nada. rs

Ok, mas como eu posso fazer isso então, desculpe minha ignorância mas thread não é o meu forte rsrrs Se puder exemplificar explicando eu bolo a solução e posto.
Obrigado.

Para testar insere um Thread.sleep(1000); como primeiro comando do metodo run()
E testa, se não funcionar posta o código

Tentei desta forma:

package com.analistafinanceiromobileandroid.entrada;

import com.analistafinanceiromobileandroid.principal.R;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Cadastro extends Activity implements Runnable{
	
	private ProgressDialog pd;
	private String valor;
	private EditText edtxtNomeCadastro;
	private EditText edtxtEmailCadastro;
	@Override
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.cadastro);
		
		final Button btnCadastrarCadastrado = (Button)findViewById(R.id.btnCadastrarCadastro);
		edtxtNomeCadastro = (EditText)findViewById(R.id.edtxtNomeCadastro);
		edtxtEmailCadastro = (EditText)findViewById(R.id.edtxtEmailCadastro);
		
		btnCadastrarCadastrado.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				pd = ProgressDialog.show(Cadastro.this, "Aguarde.", "Cadastrando informações", true, false);
				Thread t = new Thread(Cadastro.this);
				t.start();
			}
		});
	}
	
	public void run() {
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		valor = edtxtNomeCadastro.getText().toString();
		/*SQLiteDatabase db = openOrCreateDatabase("afma.db", MODE_PRIVATE, null);
		ContentValues ctv = new ContentValues();
		ctv.put("nome", edtxtNomeCadastro.toString());
		ctv.put("email", edtxtEmailCadastro.toString());
		if(db.insert("cadastro", null, ctv) > 0)
			h.sendEmptyMessage(0);*/
		
		if(edtxtNomeCadastro.getText().equals("")){
			h2.sendEmptyMessage(0);
		}
	}
	
	private Handler h = new Handler(){
		@Override
		public void handleMessage(Message msg){
			pd.dismiss();
			Toast t = Toast.makeText(getBaseContext(), "Cadastro efetuado com sucesso!", Toast.LENGTH_SHORT);
			t.show();
		}
	};
	
	private Handler h2 = new Handler(){
		@Override
		public void handleMessage(Message msg){
			pd.dismiss();
			Toast t = Toast.makeText(getBaseContext(), "Preencha o campo Nome", Toast.LENGTH_SHORT);
			t.show();
			edtxtNomeCadastro.setBackgroundColor(Color.RED);
		}
	};
}

Continuei implementando o meu código para depois testar banco de dados e tudo mais, sei que não é uma boa prática como está aí mas é teste o codigo comentado já estou providenciando os pacotes adapters, dao e db
Enfim o teste continua igual.

Para testar como o código está acima, faça o seguinte:

if(edtxtNomeCadastro.getText().equals("")){ h2.sendEmptyMessage(0); } else { h.sendEmptyMessage(0); }

Beleza ai funcionou sim.
Obrigado!