私はこの方法を持っています
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.
私は偶然それを見ました..これはそれをする正しい方法ではありません..
受信したSMSがあるかどうかを確認する必要はありません。Androidは、SMSが収入であるときに通知を受け取るためのブロードキャストレシーバーを提供します。
さあ、ここにリンクがあります。コピーして貼り付ければうまくいきます
これが理にかなっていることを願っています
上記のタイマーメソッドは、あなたが求めている種類のタイマーを使用する正しい方法ですが、私はこの小さなハックがとても好きです。
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千年の間「のみ」持続しますが、より壮大な計画ではそれについて心配する必要はありません。