如何在Android中创建计时器刻度?

时间:2013-01-17 16:50:24

标签: android

我有这个方法

public void GetSMS(){
       //in this method I read SMS in my app inbox,
       //If have new SMS create notification
}

为此我认为创建计时器滴答方法并且每隔5秒调用GetSMS()

如何为此创建正确的方法?

5 个答案:

答案 0 :(得分:14)

以下是定时器和定时器任务的示例。希望这会有所帮助。

final Handler handler = new Handler();
Timer timer = new Timer(false);
TimerTask timerTask = new TimerTask() {
    @Override
    public void run() {
        handler.post(new Runnable() {
            @Override
            public void run() {
                // Do whatever you want
            }
        });
    }
};
timer.schedule(timerTask, 1000); // 1000 = 1 second.

答案 1 :(得分:5)

也许有计时器和时间任务?

参见javadocs: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Timer.html

然而接收广播可能是一个更可靠的解决方案。 请参阅:Android - SMS Broadcast receiver

答案 2 :(得分:2)

使用Timer.scheduleAtFixedRate()如下:

final Handler handler = new Handler();
Timer timer = new Timer(false);
TimerTask timerTask = new TimerTask() {
    @Override
    public void run() {
        handler.post(new Runnable() {
            @Override
            public void run() {
                GetSMS();
            }
        });
    }
};

timer.scheduleAtFixedRate(timerTask, 5000, 5000); // every 5 seconds.

答案 3 :(得分:1)

我偶然看到了..这不是正确的做法..

您不需要检查是否收到了短信。 Android提供广播接收器,以便在短信收入时收到通知。

在这里,你有这里的链接..复制粘贴,它将工作得很好

http://androidexample.com/Incomming_SMS_Broadcast_Receiver_-_Android_Example/index.php?view=article_discription&aid=62&aaid=87

希望这有意义

答案 4 :(得分:1)

虽然上面的计时器方法是使用你所依赖的计时器的正确方法,但我非常喜欢这个小黑客:

new CountDownTimer(LARGE_NUMBER, 5000)
{
    public void onTick(long millisUntilFinished)
    {
        // do something every 5 seconds...
    }

    public void onFinish()
    {
       // finish off when we're all dead !
    }
}.start();

LARGE_NUMBER是一个长期的,根据Java文档可以采用2^63-1的(签名)值,大约292471千年!因此,启动其中一个倒计时器有效地永远相对而言。