我有这个方法
public void GetSMS(){
//in this method I read SMS in my app inbox,
//If have new SMS create notification
}
为此我认为创建计时器滴答方法并且每隔5秒调用GetSMS()
如何为此创建正确的方法?
答案 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提供广播接收器,以便在短信收入时收到通知。
在这里,你有这里的链接..复制粘贴,它将工作得很好
希望这有意义
答案 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千年!因此,启动其中一个倒计时器有效地永远相对而言。