2017-07-26 5 views
0

私は、DialogFragment内から、今から数秒後にイベントをトリガーするアラームを出そうとしています。ここでなぜ私のAlarmManagerは機能していませんか?

は、関連するコードですが、私は()のonCreateに入れる:この場合timestampEnd = System.currentTimeMillis() + 10 * 1000;、10秒で

alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, timestampEnd, pendingIntent); 

:私は、スタートボタンを押したときに

broadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context c, Intent i) { 
     Toast.makeText(c, "Rise and Shine!", Toast.LENGTH_LONG).show(); 
    } 
}; 
getActivity().registerReceiver(broadcastReceiver, new IntentFilter(ALARM_MANAGER_TAG)); 
pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent(ALARM_MANAGER_TAG), 0); 
alarmManager = (AlarmManager)(getActivity().getSystemService(Context.ALARM_SERVICE)); 

をと。

そして私は破壊オーバーライドしています

@Override 
public void onDestroy() { 
    alarmManager.cancel(pendingIntent); 
    getActivity().unregisterReceiver(broadcastReceiver); 
    super.onDestroy(); 
} 

そして、まだを、何が何らかの理由で起こりません。

答えて

0

これは、AlarmManagerがタイムスタンプをチェックするときにSystemClock.elapsedRealtime()を使用することを意味するAlarmManager.ELAPSED_REALTIME_WAKEUPを渡しています。 System.currentTimeMillis()から計算されたものを渡すので、アラームが発生するまでに約47年待たなければなりません。

最初の引数をAlarmManager.RTC_WAKEUPに変更するか、計算するタイムスタンプをSystemClock.elapsedRealtime()に変更します。

+0

経過時間リアルタイムとrtcウェイクアップの違いは何ですか?限界時間対絶対時間? – user8367195

+0

甘い、それは働いた! – user8367195

+0

あなたはドキュメントを読むことができますが、基本的には、デバイスが起動したときに0から始まるタイムスタンプと、1970年1月1日の0で始まるタイムスタンプです。 –

関連する問題