android开发教程之android的handler使用方法
2023-06-13 09:15:16 时间
AndroidHandler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title.
首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:
packagecom.android.tutor;
importjava.util.Timer;
importjava.util.TimerTask;
importandroid.app.Activity;
importandroid.os.Bundle;
publicclassHandlerDemoextendsActivity{
//title为setTitle方法提供变量,这里为了方便我设置成了int型
privateinttitle=0;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Timertimer=newTimer();
timer.scheduleAtFixedRate(newMyTask(),1,5000);
}
privateclassMyTaskextendsTimerTask{
@Override
publicvoidrun(){
setTitle("WelcometoMrWei"sblog"+title);
title++;
}
}
}
然而当我们执行程序,并不能达到我们预期的效果,所以Android引进了Handler这个特殊的类,可以说它是Runnable和Activity交互的桥梁
,所以我们只要在run方法中发送Message,而在Handler里,通过不同的Message执行不同的任务。
所以我们修改后的代码如下:
packagecom.android.tutor;
importjava.util.Timer;
importjava.util.TimerTask;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
publicclassHandlerDemoextendsActivity{
//title为setTitle方法提供变量,这里为了方便我设置成了int型
privateinttitle=0;
privateHandlermHandler=newHandler(){
publicvoidhandleMessage(Messagemsg){
switch(msg.what){
case1:
updateTitle();
break;
}
};
};
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Timertimer=newTimer();
timer.scheduleAtFixedRate(newMyTask(),1,5000);
}
privateclassMyTaskextendsTimerTask{
@Override
publicvoidrun(){
Messagemessage=newMessage();
message.what=1;
mHandler.sendMessage(message);
}
}
publicvoidupdateTitle(){
setTitle("WelcometoMrWei"sblog"+title);
title++;
}
}
下面我们看一下效果图:
相关文章
- android onresume方法,非静态方法’onResume’Android Studio
- 基于chromium for android开发Android浏览器
- android bindservice方法,Android bindservice方法返回false
- android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」
- android gradle下载慢的解决方法
- android 模拟器 haxm,Android模拟器不使用HAXM
- android sdk安装过程,图文详解Android 3.0 SDK安装教程
- android触摸屏事件,Android Touch事件分析
- Android WIFI使用简述
- android设置横屏和竖屏的方法
- 【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )
- 【Android 插件化】VirtualApp 源码分析 ( 启动应用源码分析 | HomePresenterImpl 启动应用方法 | VirtualCore 启动插件应用最终方法 )
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( plugins 闭包代码块中引入插件 | PluginAware#apply 方法引入插件 )
- 【Android 逆向】修改 Android 的 apk 安装包内的文件并重新打包 ( apktool_2.6.0.jar 下载和使用 | zipalign 文件对齐 | apksigner 签名 )
- 【Android UI】Canvas 画布 ⑥ ( Canvas 绘图源码分析 | ViewRootImpl#draw 方法源码 | ViewRootImpl#drawSoftware 方法源码 )
- Android Studio SDK 下工具的路径和作用
- Android剪裁图片简单的方法详解手机开发
- Android数据类型之间相互转换系统介绍
- android自定义Android菜单背景的代码
- Android中对于图片的内存优化方法
- android开发教程之系统资源的使用方法android资源文件
- android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
- android开发教程之ubuntu使用adb连接小米2的步骤和adb调试方法
- android开发教程之startActivityForResult使用方法
- android开发教程之判断是手机还是平板的方法
- android照相、相册获取图片剪裁报错的解决方法
- Android开发之注册登录方法示例