当前位置: 首页 > 面试题库 >

Android:如何使用计时器

羊舌琛
2023-03-14
问题内容

这是我的第一篇文章..

因此,我正在学习Android和Java(来自Actionscript),并且正在从事以下项目:

我试图单击一个ImageView,让该ImageView交换图像一秒钟,然后返回到原始图像。(这是针对窃听游戏的)

听起来很容易,对吧?我花了整整一天的时间试图让一个标准的Java Timer / TimerTask工作..没有运气..

有没有更好的办法?我的意思是,是否有特定于Android的方式来执行此类操作?如果没有,那么理想的方法是什么?

谢谢大家的帮助!-G


问题答案:

这是我的Android计时器类,应该可以正常工作。它每秒发送一个信号。如果您想要其他方案,请更改schedule()调用。

请注意,您无法在计时器线程中更改Android gui内容,这仅在主线程中允许。这就是为什么您必须使用Handler将控制权交还给主线程的原因。

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import android.os.Handler;
import android.os.Message;

public class SystemTimerAndroid {
    private final Timer clockTimer;

    private class Task extends TimerTask {
        public void run() {
            timerHandler.sendEmptyMessage(0);
        }
    }

    private final Handler timerHandler = new Handler() {
        public void handleMessage (Message  msg) {
            // runs in context of the main thread
            timerSignal();
        }
    };

    private List<SystemTimerListener> clockListener = new ArrayList<SystemTimerListener>();

    public SystemTimerAndroid() {
        clockTimer = new Timer();
        clockTimer.schedule(new Task(), 1000, 1000);
    }

    private void timerSignal() {
        for(SystemTimerListener listener : clockListener)
            listener.onSystemTimeSignal();      
    }

    public void killTimer() {
        clockTimer.cancel();
    }

    @Override
    public void addListener(SystemTimerListener listener) {
        clockListener.add(listener);        
    }
}


 类似资料:
  • Hi plan to development and android countdown timer app for the activity with start and stop button when user click start button display timer countdown and user go to remaining activities when the tim

  • 我正在编写一个Android应用程序,通过GATT服务与定制设备进行通信。所述设备提供具有两个特征的服务,用于读取和写入数据。当一些数据写入写入特性时,BLE设备将通过有线UART接口将其发送到其他设备。然后,另一个设备将通过相同的UART接口响应BLE设备。收到后,BLE设备将发送一个通知,通知其服务的读取特性上有新数据可用,以便我的Android应用程序可以检索它。 我想做的是测量从Andro

  • 问题内容: 我需要使用Python的tkinter库编写程序。 我的主要问题是我不知道如何创建计时器或类似 的时钟hh:。 我需要它来更新自身(这是我不知道该怎么做的)。 问题答案: 根窗口具有一种称为的方法,该方法可用于安排给定时间段后要调用的函数。如果该函数本身调用,则您已设置了一个自动重复事件。 这是一个工作示例: 请记住,这不能保证该功能将完全按时运行。它仅计划在给定的时间后运行作业。由于

  • 我有一个要求,任务应该等待异步请求完成。应定期验证该过程。activiti工作流应每10分钟发送一次请求,以检查之前的请求是否已被批准。 如何在激活BPMN中配置它。

  • 我有两个XML EditTexts。在一个EditText中,用户可以将一个数字作为分钟,在另一个EditText中,可以将一个数字作为秒。单击finish按钮后,seconds EditText应开始倒计时,并每秒更新其文本。 此外,我如何保持更新,直到它达到零分钟零秒?