我有这个方法
public void GetSMS(){
//in this method I read SMS in my app inbox,
//If have new SMS create notification
}
为此,我认为创建计时器滴答方法并每 5 秒调用一次 GetSMS()
我怎样才能为此创建一个正确的方法?
我有这个方法
public void GetSMS(){
//in this method I read SMS in my app inbox,
//If have new SMS create notification
}
为此,我认为创建计时器滴答方法并每 5 秒调用一次 GetSMS()
我怎样才能为此创建一个正确的方法?
这是一个定时器和定时器任务的例子。希望这可以帮助。
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.
也许有一个计时器和一个计时器任务?
请参阅 javadocs: http ://docs.oracle.com/javase/1.4.2/docs/api/java/util/Timer.html
然而接收广播可能是一个更可靠的解决方案。请参阅:Android - SMS 广播接收器
使用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.
我偶然看到它..这不是正确的方法..
您无需检查是否收到了短信。Android 提供广播接收器以在收到短信时收到通知。
给你,你有链接在这里..复制粘贴,它会很好用
希望这是有道理的
尽管上述计时器方法是使用您所追求的那种计时器的正确方法,但我非常喜欢这个小技巧:
new CountDownTimer(Long.MAX_VALUE, 5000)
{
public void onTick(long millisUntilFinished)
{
// do something every 5 seconds...
}
public void onFinish()
{
// finish off when we're all dead !
}
}.start();
Long.MAX_VALUE
根据 Java 文档,有一个(签名的)值2^63-1
,大约是 292471 千年!因此,相对而言,有效地启动其中一个倒数计时器会永远持续下去。当然这取决于你的间隔时间。如果您希望每 1 秒有一个计时器,则计时器将“仅”持续 58494 千年,但在更宏大的计划中我们不需要担心这一点。