Activity利用Handler与Thread开展通讯,写了一个简单Demo
Activity利用Handler与Thread进行通讯,写了一个简单Demo
最近写了一个列子,想跟大家一起分享.
用android.os.Handler、java.lang.Thread以及android.os.Message这三个类的整合应用。
这里只有Activity类代码.其他的一些布局文件,我想看到以下代码,你们因该明白.
最近写了一个列子,想跟大家一起分享.
用android.os.Handler、java.lang.Thread以及android.os.Message这三个类的整合应用。
这里只有Activity类代码.其他的一些布局文件,我想看到以下代码,你们因该明白.
import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import com.wm.nsp.R; public class DateHandlerActiviy extends Activity { private MyHandler myHandler; private TextView textView; private boolean bool = true; private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss"); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.date); textView = (TextView)findViewById(R.id.textView); Button startButton = (Button)findViewById(R.id.startButton); Button endButton = (Button)findViewById(R.id.endButton); startButton.setOnClickListener(listener); endButton.setOnClickListener(listener); myHandler = new MyHandler(Looper.getMainLooper()); } private OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { switch(v.getId()){ case R.id.startButton: bool = true; new myThread().start();//启动线程,开始计时 break; case R.id.endButton: bool = false;//结束线程 break; default: break; } } }; class myThread extends Thread{ @Override public void run() { while(bool){ Message message = myHandler.obtainMessage(); message.what = 1; message.obj = simpleDateFormat.format(new Date()); myHandler.sendMessage(message); try { Thread.sleep(1000);//休息一秒 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } class MyHandler extends Handler{ public MyHandler(Looper looper){ super(looper); } @Override public void handleMessage(Message msg) { Log.i("System.out", msg.obj+""); if(msg.what == 1){ textView.setText(msg.obj.toString()); } } } }