Android(安卓)Handler(四)
16lz
2021-01-26
可以看到在onCreate 方法中线程的ID是1(UI线程) 这与 HandlerMessage 进行消息处理时是所作的线程ID是一样的,而消息发送的线程ID则为8非UI线程。
使用Threadle进行实现
java代码:
public class ThreadHandlerrActivity extends Activity implements Callback, OnClickListener {
private TextView txt;
private Button btnStart, btnStop;
private Handler myHandler;
private TimerThread timerThread;
private int Total=30;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txt = (TextView) findViewById(R.id.txt);
btnStart = (Button) findViewById(R.id.btnStartTime);
btnStop = (Button) findViewById(R.id.btnStopTime);
Log.d("ThreadId", "onCread:" + String.valueOf(Thread.currentThread().getId()));
myHandler = new Handler(this);
btnStart.setOnClickListener(this);
btnStop.setOnClickListener(this);
}
/** * 实现消息处理 */
@Override
public boolean handleMessage(Message msg) {
switch(msg.what) {
case 0: Bundle date=msg.getData();
txt.setText(String.valueOf(date.getInt("time")));
Log.d("ThreadId", "HandlerMessage:" + String.valueOf(Thread.currentThread().getId()));
Log.d("ThreadId", "msgDate:" + String.valueOf(date.getInt("time")));
break;
}
return false;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnStartTime:
//自定义的线程
timerThread=new TimerThread(myHandler,60);
timerThread.start();
break;
case R.id.btnStopTime: timerThread.stop();
//timerThread.destroy();
break;
}
}
}
使用Threadle进行实现
java代码:
public class ThreadHandlerrActivity extends Activity implements Callback, OnClickListener {
private TextView txt;
private Button btnStart, btnStop;
private Handler myHandler;
private TimerThread timerThread;
private int Total=30;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txt = (TextView) findViewById(R.id.txt);
btnStart = (Button) findViewById(R.id.btnStartTime);
btnStop = (Button) findViewById(R.id.btnStopTime);
Log.d("ThreadId", "onCread:" + String.valueOf(Thread.currentThread().getId()));
myHandler = new Handler(this);
btnStart.setOnClickListener(this);
btnStop.setOnClickListener(this);
}
/** * 实现消息处理 */
@Override
public boolean handleMessage(Message msg) {
switch(msg.what) {
case 0: Bundle date=msg.getData();
txt.setText(String.valueOf(date.getInt("time")));
Log.d("ThreadId", "HandlerMessage:" + String.valueOf(Thread.currentThread().getId()));
Log.d("ThreadId", "msgDate:" + String.valueOf(date.getInt("time")));
break;
}
return false;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnStartTime:
//自定义的线程
timerThread=new TimerThread(myHandler,60);
timerThread.start();
break;
case R.id.btnStopTime: timerThread.stop();
//timerThread.destroy();
break;
}
}
}
更多相关文章
- Android(安卓)USB Host与HID通讯(二)
- [置顶] android 深入理解AnsyncTask
- Android各框架的总结及选型
- SpringBoot webSocket 发送广播、点对点消息,Android接收
- Android消息机制——Handler
- Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标
- php如何解析IOS/Android上传的Json消息
- Android定义定时器实现定时任务(亲测可用)
- Android消息机制系列(2)——Handler源码解析及用法实例