如何关闭android中的HandlerThread
16lz
2021-01-23
android 中的HandlerThread包含了android中的消息处理机制必须的looper,当你启动这个线程的时候,就会闯进looper,并开启消息处理的循环。
跟其它线程一样,HandlerThread是可不可以直接stop掉的,不过经过本人测试,你可以调用:getLooper().quit();来退出这个线程,其实原理很简单,就是改变在消息循环里面标志位,退出整个while循环,使线程执行完毕。
部分 测试代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.main);tv_name = (TextView) findViewById(R.id.tv_name);btn_name = (Button) findViewById(R.id.btn_name);Log.i(TAG, "==================main thread:" + Thread.currentThread().getName());final HandlerThread thread = new HandlerThread("handlerThread");thread.start();final MyHandler handler = new MyHandler(thread.getLooper());btn_name.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {handler.sendEmptyMessage(1);try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}thread.getLooper().quit();}});}class MyHandler extends Handler {public MyHandler(Looper looper) {super(looper);}@Overridepublic void handleMessage(Message msg) {Log.i(TAG, "==================" + Thread.currentThread().getName());//tv_name.setText("hello, this is the first message from handler");super.handleMessage(msg);}}
不过要注意:要想更新界面内容,还是需要使用界面的Looper,不然的话还是会抛错误,还是那句话,所有跟改变界关的操作,都得通过界面的Looper来执行
更多相关文章
- 讨论会3:Android用户研究及4.0界面设计分析
- Android对弹出输入法界面影响app界面布局
- android零碎要点---android开发者的福音,59_1 Android的界面设计
- 学习 Android Handler 消息机制需要注意这些问题!
- Android 将APK文件安装到AVD中并分析其界面结构
- android用户界面之WebView教程实例汇总
- Android界面布局(Layout)和菜单(Menu)
- Android消息机制分析
- 系出名门Android(10) - HTTP 通信, XML 解析, 通过 Hander 实现