当前位置:编程学堂 > 详解Android Handler的使用

详解Android Handler的使用

  • 发布:2023-10-06 06:13

  • 导入android.widget.Button;
  • 公共课程 HandlerTest 扩展了 Activity {
  • /** 首次创建活动时调用。 */
  • 私有按钮开始按钮;
  • 私有按钮endButton;
  • @Override
  • public void onCreate(捆绑已保存实例状态){
  • super.onCreate(savedInstanceState);
  • setContentView(R.layout.main);
  • //根据id获得控件对象
  • startButton = (Button)findViewById(R.id.startButton);
  • endButton = (Button)findViewById(R.id.endButton);
  • //为控件设置监听器
  • startButton.setOnClickListener(new StartButtonListener());
  • endButton.setOnClickListener(new EndButtonListener());
  • }
  • 类 StartButtonListener 实现 OnClickListener{
  • public void onClick(View v){
  • //调用Handler的post()方法,将要执行的线程对象放置在队列中
  • www.sychzs.cn(updateThread);
  • }
  • }
  • 类 EndButtonListener 实现 OnClickListener{
  • public void onClick(View v) {
  • //调用Handler的removeCallbacks()方法删除队列中未执行的线程对象
  • handler.removeCallbacks(updateThread);
  • }
  • }
  • //创建Handler对象
  • Handler handler = new Handler();
  • //创建新的线程对象
  • Runnable updateThread = new Runnable(){
  • //将要执行的操作写入线程对象的run方法中
  • public void run(){
  • System.out.println("updateThread");
  • //调用Handler的postDelayed()方法
  • //该方法的作用是将要执行的线程对象放入队列中,时间结束后,运行指定的线程对象
  • //第一个参数为Runnable类型:要执行的线程对象
  • //第二个参数为long类型:延迟时间,单位毫秒
  • handler.postDelayed(updateThread, 3000);
  • }
  • };
  • }
  • 示例2:应用程序中有一个进度条和一个按钮。单击按钮时,进度条每秒前进一部分。

    开发步骤:

    1。创建一个新的 Android 应用程序

    2。在布局文件中添加一个progressBar和一个Button,并设置它们的属性和值

    3。在Activity中声明控制变量,根据id获取控制对象

    4。创建线程对象

    a) 通过匿名内部类

    b) 写完步骤5和6后,继续在这个线程对象中写操作

    i。声明一个变量来设置进度条的进度

  • /** 首次创建活动时调用。 */
  • 私有进度条进度条;
  • 私有按钮开始按钮;
  • @Override
  • public void onCreate(捆绑已保存实例状态){
  • super.onCreate(savedInstanceState);
  • setContentView(R.layout.main);
  • progressBar = (ProgressBar)findViewById(R.id.progressbar);
  • startButton = (Button)findViewById(R.id.startButton);
  • startButton.setOnClickListener(new ProgressBarOnClickListener());
  • }
  • ProgressBarOnClickListener 类实现 OnClickListener{
  • public void onClick(View v){
  • //设置细节条为可见状态
  • progressBar.setVisibility(View.VISIBLE);
  • www.sychzs.cn(updateThread);
  • }
  • }
  • //使用匿名内部类来复写Handler缺少的handlerMessage()方法
  • Handler updateBarHandler = new Handler(){
  • @Override
  • public voidhandleMessage(Message msg){
  • progressBar.setProgress(msg.arg1);
  • 相关文章

    最新资讯

    热门推荐