別スレッドから画面(layout)を制御するにはhandlerを使用します。
制御したい画面を持つアクティビティに、handerの宣言をします。
宣言したhandlerはsendMessageメソッドで呼び出します。
データはMessageオブジェクトを利用してやりとりします。
下記はひたすら1秒毎にカウントし、TextViewにその秒数を表示するだけのサンプルです。
ストップボタンもついていません :x001:
package com.test.handlertest; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.TextView; public class HandlerTestActivity extends Activity { /** Called when the activity is first created. */ private Timer timer=null; private int counter = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); timer = new Timer(); timer.schedule(task,1000,1000); } private TimerTask task = new TimerTask() { @Override public void run() { counter += 1; handler.sendMessage(Message.obtain(handler,0,counter)); } }; private Handler handler = new Handler(){ public void handleMessage(Message msg){ TextView tv = (TextView)findViewById(R.id.textview1); tv.setText((String.valueOf(msg.obj))); } }; }