Android Handler的使用方法

如何让程序5秒钟更新一下Title.

首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:

package com.example.androidhandletest;

import java.util.Timer;
import java.util.TimerTask;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {

 private int title;
  @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  Timer timer=new Timer();
  timer.scheduleAtFixedRate(new MyTask(), 1, 2000);
  
 }

 public class MyTask extends TimerTask {

  @Override
  public void run() {
   // TODO Auto-generated method stub
   Log.i("timer", "update...");
   setTitle("update title : " + title);
   title++;
  }

 }
 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

}

 

程序无法运行,所以Android 引进了Handler 这个特殊的类,可以说它是Runnable和Activity交互的桥梁
,所以我们只要在run方法中发送Message,而在Handler里,通过不同的Message执行不同的任务。

所以我们修改后的代码如下:

package com.example.androidhandletest;

import java.util.Timer;
import java.util.TimerTask;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {

 private int title;
 private Handler handler=new Handler(){

  @Override
  public void handleMessage(Message msg) {
   // TODO Auto-generated method stub
   //super.handleMessage(msg);
   switch(msg.what){
   case 1:
    UpdateTile();
    break;
   }
  } 
 };
 private void UpdateTile() {
  // TODO Auto-generated method stub
  this.setTitle("update title : " + title);
  title++;
 }
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  Timer timer=new Timer();
  timer.scheduleAtFixedRate(new MyTask(), 1, 2000);
  
 }

 public class MyTask extends TimerTask {

  @Override
  public void run() {
   // TODO Auto-generated method stub
   Log.i("timer", "update...");
   Message msg=new Message();
   msg.what=1;
   handler.sendMessage(msg);
  }

 }
 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

}

 

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/3330422.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转:[C/C++]2014年7月华为校招机试真题(一)

[C/C]2014年7月华为校招机试真题(一)转载于:https://www.cnblogs.com/kira2will/p/4039521.html

df命令:显示系统上可使用的磁盘空间

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 简介 df命令的英文全称即“Disk Free”,用于显示系统上可使用的磁盘空间。 日常普遍用该命令可以查看硬盘的挂载点,磁盘被占用了多少空间、还剩多少空间等信息。 默认单位为KB&#…

核心动画--基本动画

#pragma mark 动画暂停- (void)pauseAnimation{// 1. 取出当前的动画的时间点,就是要暂停的时间点CFTimeInterval pauseTime [self.myView.layer convertTime:CACurrentMediaTime() fromLayer:nil];// 2. 设置动画的时间偏移量,指定时间偏移量的目的是让…

du命令:显示文件或者目录的大小

以下内容源于网路资源的学习与整理,如有侵权请告知删除。 由于磁盘空间将满,需要整理磁盘时,想知道哪些文件夹的内容过大,以及删除一些无用文件,du命令会非常有用。在用户目录下输入“du --max-depth1 -h”查看哪些文…

windows 下查看进程占用

2019独角兽企业重金招聘Python工程师标准>>> //查找出占用8086端口进程的ID netstat -nao | findstr8086 //本机输出效果为: TCP 0.0.0.0:8086 0.0.0.0:0 LISTENING 804 //很显然,进程ID是804 //找出ID为804的进程名 …

【知乎摘要】女生婚前应该清楚男友哪些方面了才能嫁给他

纽约时报15问 1. 我们要不要孩子?如果要,主要由谁来负责? 2. 我们的家庭赚钱能力及目标是什么?消费观及储蓄观会不会发生冲突? 3. 我们的家庭如何维持?由谁来掌握可能出现的风险? 4. 我们有没有详尽地交换…

利用tftp将内核镜像下载到开发板

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、前言 除了利用fastboot将内核镜像从PC主机下载到开发板的inand中,还可以利用tftp指令将虚拟机linux系统中的镜像下载到开发板的内存中。比如将bootcm设置如下: set boot…

MySQL数据库增删改查

常用的数据类型: int:整数类型,无符号的范围【0,2^32-1】,有符号【-2^31,2^31-1】 float:单精度浮点,4字节64位 double:双精度浮点,8字节64位 char:固定长…

C#多线程案例基础

C#多线程案例基础(转) 在学习多线程之前,我们先来看几个概念: 1,什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源,当然一个程序也可能…

什么是shell?

本文源于网络资源的学习与整理,如有侵权请告知删除。 shell的概念 shell,它的意思是“壳”,如果理解shell在linux中的作用(内核的外壳,既保护了内核,也向用户提供了操作内核的接口)&#xff0c…

chmod的理解

ll file 共有是十位第一位:如果是 - 表示它是文件第一位:如果是d 表示它是目录剩下的333 分别表示 属主u属组g其他用户o所以如下:转载于:https://blog.51cto.com/zlong37/1567472

中国象棋程序的设计与实现(五)--回答CSDN读者的一些问题

最近写了很多文章,同时,也上传了很多免积分的FansUnion原创的优质资源,有兴趣的同学可以看来我的CSDN博客瞧瞧 http://blog.csdn.net/FansUnion。近期,收到了不少读者的评论、反馈、留言。对于其中的一些问题,我想专门…

几种常见的shell:sh、bash、csh、tcsh、ash

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 我们知道,Windows、Mac OS、Android 等操作系统由一家公司开发,所有的核心软件和基础库都由一家公司做决定,容易形成统一的标准,一般不会…

第九周项目6-穷举法之年龄几何

张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。 构建代码: /**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称:temp.…

JavaScript操作大全整理(思维导图七--字符串函数)

7. JavaScript 字符串函数 转载于:https://www.cnblogs.com/yuxia/p/3360824.html

进入shell的两种方法

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 方法一:在图形界面中打开终端 在图形界面下,进入 Shell 的方法是使用 Linux 桌面环境中的终端模拟包,也就是我们常说的终端,这样在图形桌…

外籍主管眼中的阿里巴巴

尝试接受一份新领域的职位有时是值得的,而对雇主来说,任命“非正统人选”从而给团队带来清新气息,也是有好处的。 这是詹姆斯•哈迪(James Hardy)的经验。一位知道他想转行的朋友和他联系,后来他就得到了现在的职位——在线零售商…

Shell脚本运行方法

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 在文本编辑器中编写如下代码并保存为test.sh。 #!/bin/bash echo "Hello World !" 这个文件的扩展名为sh(sh代表shell),但其实扩展名并不…

Perl 中级教程 第5章课后习题

5. 9. 1. 练习1 [5 分钟] 先不要运行程序, 看看你能否判断出这程序的哪部份出了问题?如果你看不出 来, 就可以运行一相程序, 得到些暗示, 来看是否能修改好: my %passenger_1 { name > Ginger, age > 22, occupation > Movie Star, real_age &…

SQL Server 固定角色

1、 查看固定服务器角色 execute sp_helpsrvrole; 管理: execute master..sp_addsrvrolemember logingNameneeky rolenamesysadmin; go execute master..sp_dropsrvrolemember logingNameneeky rolenamesysadmin; go 2、 查看固定数据库角色成员 execute sp_helprol…