0

私は小さなアンドロイドアプリケーションを開発しています。そして、数分後にアプリケーションで何かをしたいと思います。これらの分は静的なものではなく、動的なものです。だから私はこれにアンドロイドカレンダーsetInexactRepeatingを使用しています。私のコードは次のようになります

 Calendar cal = Calendar.getInstance();
        // Start something after 4 minutes 
        cal.add(Calendar.MINUTE, 4);
        get_alaram_service().setInexactRepeating(AlarmManager.RTC_WAKEUP,
            cal.getTimeInMillis(), 1000*300, get_pendingintent());

したがって、これは 4 分後に setInexactRepeating で機能し、保留中のインテントが実行され、その後、これをこの時間だけ繰り返し続けます。(1000*300)。

したがって、私の問題は、setInexactRepeating の 2 番目のパラメーターは、タイマーを開始したい時刻であり、3 番目のパラメーターはこのことを繰り返すためのものです。2 番目のパラメーターはミリ秒単位の値です。(1000 * 300)のようなミリ秒で自分の分値を渡そうとしましたが、正しく機能しませんでした。私はそれがどのように適切に機能しているのかわかりません。cal.getTimeInMillis() を確認すると、非常に大きな整数です。それは実際には何ですか。

私は何か間違ったことをしていますか?あなたの助けが必要ですありがとう...

4

1 に答える 1

0

これはドキュメントには明示的に記載されていませんが、2 番目のパラメーター (triggerAtMillis) はエポックからのミリ秒単位の時間です。これがCalendar.getInstance()が返すものです。このメソッドを呼び出すと、現在の時刻が返されます。これは実際には 1970 年 1 月 1 日からのミリ秒数であるため、大きな数値です。次に、AlarmManager が最初に起動するタイミングを定義するために何か (4 分など) を追加する必要があります。

于 2013-11-13T10:50:54.743 に答える