7

私はこの方法を持っています

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

このために、タイマーティックメソッドを作成し、5秒ごとにGetSMS()を呼び出すと思います

そのための正しいメソッドを作成するにはどうすればよいですか?

4

5 に答える 5

18

タイマーとタイマータスクの例を次に示します。お役に立てれば。

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.
于 2013-01-18T06:41:07.083 に答える
5

多分タイマーとタイマータスクで?

javadocsを参照してください:http: //docs.oracle.com/javase/1.4.2/docs/api/java/util/Timer.html

それでも、放送を受信することはおそらくより確実な解決策です。参照:Android-SMSブロードキャストレシーバー

于 2013-01-17T16:53:04.973 に答える
5

次のように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.
于 2016-07-26T13:55:01.743 に答える
1

私は偶然それを見ました..これはそれをする正しい方法ではありません..

受信したSMSがあるかどうかを確認する必要はありません。Androidは、SMSが収入であるときに通知を受け取るためのブロードキャストレシーバーを提供します。

さあ、ここにリンクがあります。コピーして貼り付ければうまくいきます

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

これが理にかなっていることを願っています

于 2014-05-28T06:54:00.767 に答える
1

上記のタイマーメソッドは、あなたが求めている種類のタイマーを使用する正しい方法ですが、私はこの小さなハックがとても好きです。

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_VALUEJavaドキュメントによると、(署名された)値2^63-1は約292471千年です!したがって、これらのカウントダウンタイマーのいずれかを起動すると、比較的効果的に永遠に続きます。もちろん、これはあなたのインターバル時間に依存します。1秒ごとにタイマーが必要な場合、タイマーは58494千年の間「のみ」持続しますが、より壮大な計画ではそれについて心配する必要はありません。

于 2017-01-27T10:34:20.337 に答える