Timer跟TimerTask其实非常简单,用来执行一段规定时间内完成的任务,本文做的是设置Button的文本,首先activity创建的时候会显示默认文本“哈哈”,3S‘之后将Button文本改成“嘿嘿”,如果点击了Button,则定时器会进行新的一轮的定时任务,基于这个原理其实是可以开发类似于轮询的这种业务,但是使用这种方式不太好。
同时,点击Button会切换软键盘的状态,控制显示隐藏软键盘。
public class TestTimerTaskActivity extends Activity implements OnClickListener {
private static final int MESSAGE_WHAT = 100;
private Button btnClick;
private Timer mTimer;
private TimerTask mTimerTask;
private InputMethodManager inputMethodManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timer);
init();
mTimer = new Timer(true);
initTimerTask();
}
/**
* Initialize TimeTask
*/
private void initTimerTask() {
if (null != mTimer && null != mTimerTask)
mTimerTask.cancel();
mTimerTask = new MyTimerTask();
mTimer.schedule(mTimerTask, 3000);
}
/**
* Initialize the views
*/
private void init() {
btnClick = (Button) findViewById(R.id.btnClick);
btnClick.setOnClickListener(this);
inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
}
/**
* Handler Update UI
*/
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == MESSAGE_WHAT) {
btnClick.setText(String.valueOf(msg.obj));
}
}
};
/**
* Override Button ClickListener
*/
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.btnClick:
btnClick.setText("哈哈");
initTimerTask();
toggleSoftKeyBoard();
break;
default:
break;
}
}
/**
* toggleSoftKeyBoard status
*/
private void toggleSoftKeyBoard() {
if (inputMethodManager.isActive()) {
inputMethodManager.toggleSoftInput(
InputMethodManager.SHOW_IMPLICIT,
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
/**
* Send message to UIThread
*
* @param what
* message identifies
* @param str
* Content of the message
*/
private void sendMssage(int what, String str) {
Message message = handler.obtainMessage(what, str);
handler.sendMessage(message);
}
/**
* Custom Derived class
*
* @author wallace
*
*/
private class MyTimerTask extends TimerTask {
@Override
public void run() {
sendMssage(MESSAGE_WHAT, "嘿嘿");
}
}
}
如果你想在activity刚创建的时候就调出软键盘,上述切换软键盘状态的函数是不起作用的,要用这个函数,其实没有必要用这段代码显示软键盘,直接在manifest文件里配置activity的时候给activity配置android:windowSoftInputMode="stateVisible|adjustPan"这个属性,就能自动弹出软键盘
private void toggleSoftKeyBoard() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
inputMethodManager.toggleSoftInput(
InputMethodManager.SHOW_IMPLICIT,
InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 100);
}
分享到:
相关推荐
首先,Handler是Android中的一个核心组件,主要用于线程间的通信,特别是主线程(UI线程)与其他工作线程之间的交互。它通过Message对象来传递消息,并在适当的时间处理这些消息。而TimerTask是Java的定时任务类,...
总结,`Android-UI-TimerTask.rar`中的资料主要讲述了如何利用`TimerTask`和`Timer`来在后台线程安排任务,然后在主线程安全地更新UI,这对于理解Android中多线程与UI交互的重要性有很大帮助。通过合理运用这些工具...
在Android开发中,实时更新界面元素常常涉及到线程间的通信,这里主要讲解如何利用Handler、Timer、TimerTask和Message这四个关键组件来实现这一功能。首先,我们需要理解这些组件的基本概念和作用。 **Handler** ...
本资料包“安卓天气日历时间选择倒计时相关-Button倒计时用到了Timer计时器和Handler.zip”主要关注如何在Android应用中实现Button的倒计时功能,该功能通常涉及到两个关键组件:`java.util.Timer` 和 `android.os....
通过查看项目源码,我们可以学习到如何结合`Timer`和`TextView`更新倒计时文本,以及如何处理线程间的交互。 5. **最佳实践** - 使用`Handler`或`CountDownTimer`代替`Timer`,因为它们更适应Android环境,尤其是...
在Android开发中,Handler是一种非常重要的组件,它与线程通信密切相关,特别是在更新UI和处理异步任务时。本文将深入探讨如何利用Handler构建一个图片浏览器,并结合计时器(Timer)来实现特定功能。 首先,理解...
Handler更适合简单且与UI交互密切的定时任务,而Timer和TimerTask适用于复杂的定时任务,特别是那些需要后台持续运行的场景。 在提供的`TimerDemo`文件中,可能包含了使用以上两种方式实现的定时器示例代码,通过...
标题"Android Framelayout显示静态和动态的扑克牌"暗示我们将探讨如何在Framelayout中展示静态图像(如扑克牌)以及如何实现这些图像的动态效果,这通常涉及到Android的动画机制。 首先,让我们深入了解`...
本篇文章将详细讲解如何利用ViewPager实现手动切换,并结合Timer和Handler来实现自动切换,以及创建左右完美无限滑动的效果,确保滑动过程极其平滑。 首先,ViewPager的基本用法是通过设置Adapter来填充数据。...
在Android开发中,更新UI(用户界面)是应用程序与用户交互的关键部分。然而,由于Android的主线程(也称为UI线程)负责处理所有的用户输入事件以及绘制UI,因此任何耗时的操作都应避免在此线程中执行,以免导致应用...
总之,Android自动播放动画涉及的技术包括Handler、Runnable、Timer、TimerTask、属性动画(ObjectAnimator或ValueAnimator)以及视图动画(Animation)。通过灵活运用这些工具和概念,开发者可以创造出丰富多彩的...
这个项目中,开发者使用了ViewPager组件配合Timer和Handler来实现这一功能。下面我们将详细探讨这些知识点。 首先,**ViewPager**是Android SDK中的一个控件,它允许用户在多个视图之间进行水平滑动。在广告展示或...
Timer类可以安排一次或重复的任务,而Handler则用于在主线程中执行任务。具体步骤如下: 1. 创建一个Timer对象,调用`Timer.schedule(TimerTask task, long delay, long period)`方法来定时执行任务。这里的任务...
在Android应用开发中,计时器通常通过`java.util.Timer`类或者使用Android提供的`Handler`和`Runnable`配合来实现。本文将深入探讨如何编写Android计时器程序,为初学者提供入门指导。 首先,我们需要了解Android...
在Android开发中,定时任务和线程间的通信是常见的需求,本实例主要讲解了如何使用Android的定时器(Timer)以及结合Handler来实现定时任务和更新UI。下面将详细阐述这些知识点。 首先,Android中的定时器(Timer)...
Android中的定时器并非直接内置在SDK中,而是通过Java的标准库`java.util.Timer`和`java.util.TimerTask`来实现。`Timer`类用于调度任务在未来某个时间点或定期执行,而`TimerTask`是执行的具体任务类。创建一个`...
这个源码项目是关于如何使用ViewPager实现手动切换以及如何结合Timer和Handler来实现自动切换,达到平滑且无限循环的左右滑动效果。下面我们将深入探讨这些技术点。 首先,`ViewPager`是Android Support Library中...
这种方式更适用于与UI交互相关的延时任务,因为`Handler`可以确保任务在主线程中执行,避免了跨线程操作UI的问题。但是,`Handler`的延时任务依赖于主线程的`Looper`循环,如果主线程被阻塞,延时任务也会受到影响。...
在Android应用开发中,我们可以利用Java的Timer类来创建定时任务,而Handler则用于更新UI线程中的状态。 1. **Timer和TimerTask**: Timer类是一个调度工具,可以安排在未来某个时间执行一次或重复执行任务。我们...