Android开发历程_12(Handler的使用)
来源:互联网 发布:矢量图软件coreldraw 编辑:程序博客网 时间:2024/05/22 07:51
本文主要介绍Android中Handler的简单使用方法,Handler跟多线程,消息队列联系很紧密,在平常的实际程序开发中比较常见。本文分为4个简单的例子来学校handler。
参考资料为Mars老师的教程,http://www.mars-droid.com/.
开发环境为android4.1.
例1
这个例子是最简单的介绍handler使用的,是将handler绑定到它所建立的线程中.
本次实验完成的功能是:单击Start按钮,程序会开始启动线程,并且线程程序完成后延时1s会继续启动该线程,每次线程的run函数中完成对界面输出nUpdateThread...文字,不停的运行下去,当单击End按钮时,该线程就会停止,如果继续单击Start,则文字又开始输出了。
软件界面如下:
单击Start后会有如下显示:
实验主要部分代码和注释(附录有工程code下载链接):
MainActivity.java:
package com.example.handler1;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity { private TextView text_view = null; private Button start = null; private Button end = null; //使用handler时首先要创建一个handler Handler handler = new Handler(); //要用handler来处理多线程可以使用runnable接口,这里先定义该接口 //线程中运行该接口的run函数 Runnable update_thread = new Runnable() { public void run() { //线程每次执行时输出"UpdateThread..."文字,且自动换行 //textview的append功能和Qt中的append类似,不会覆盖前面 //的内容,只是Qt中的append默认是自动换行模式 text_view.append("\nUpdateThread..."); //延时1s后又将线程加入到线程队列中 handler.postDelayed(update_thread, 1000); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text_view = (TextView)findViewById(R.id.text_view); start = (Button)findViewById(R.id.start); start.setOnClickListener(new StartClickListener()); end = (Button)findViewById(R.id.end); end.setOnClickListener(new EndClickListener()); } private class StartClickListener implements OnClickListener { public void onClick(View v) { // TODO Auto-generated method stub //将线程接口立刻送到线程队列中 handler.post(update_thread); } } private class EndClickListener implements OnClickListener { public void onClick(View v) { // TODO Auto-generated method stub //将接口从线程队列中移除 handler.removeCallbacks(update_thread); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; }}
- Android开发历程_12(Handler的使用)
- android开发Handler的使用
- Android开发历程_15(AppWidget的使用)
- Android 学习 笔记_12. Spinner的简单实使用
- Android 开发 —— Handler的使用
- Android开发之Handler的使用
- Android 开发 —— Handler的使用
- Android开发:Handler的使用(一)
- Android开发:Handler的使用(二)
- Android开发:Handler的使用(三)
- Android开发基础之Handler的使用
- Android开发(33) Android中有关handler的使用(一)
- android handler的使用
- Android Handler的使用
- Android Handler的使用
- Android Handler的使用
- Android Handler的使用
- Android Handler的使用
- 各种面试题
- 寒假前刷题(10)搜索系列 hdu 1242
- 孕妈妈害喜的最好膳食法
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Zigbee 之SerialApp InitBoard( OB_COLD );
- Android开发历程_12(Handler的使用)
- 开发板重写Linux+Qt 和 WinCE步骤
- 陌陌触顶求变:弃陌生人概念 转型LBS社区
- JVM启动参数之 -verbose:gc
- 【shell】/dev/null 2>&1
- WordNet使用方法
- windows下的QT开发(学习一)
- 对于Android DEX文件详细说明
- Android 控件之ProgressBar进度条