2016-04-19 18 views
0

私はmin API 19を使い、Android 6.0で実行しています。私はsetExact(5秒ごとに実行したい)でアラームを作成しました。それをテストするために私はこの(私はフラグメント内にそれを作成した)行った:setExact()は時刻(前)に起動しません

Intent intent = new Intent(getActivity(), AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, intent, 0); 

AlarmManager alarmManager = (AlarmManager) (getActivity().getSystemService(getContext().ALARM_SERVICE)); 
alarmManager.setExact(AlarmManager.RTC_WAKEUP, 5000, pendingIntent); 

をそして、それは呼び出します。私はトーストが2または3秒後に表示されるボタンをクリックしたときに

public class AlarmReceiver extends WakefulBroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "Test"+SPreferences.getCountedSample(context), Toast.LENGTH_SHORT).show(); 
} 
} 

をしかし。

トリガー時間を5000から10000または0に変更した場合、トーストメッセージを表示するには(ボタンをクリックしてから(アラームを作成してから10秒後))時間は変わりません。ボタンをクリックしてから2〜3秒後には、常にブロードキャストが呼び出されます。

なぜトリガーが機能しないのですか?

答えて

0

は交換してみてください:と

alarmManager.setExact(AlarmManager.RTC_WAKEUP, 5000, pendingIntent); 

alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5000, pendingIntent); 

setExact()への第二のパラメータは時間です。 RTC_WAKEUPを選択したので、時刻はリアルタイムクロックのタイムベースになります。その時計の「現在」の値はSystem.currentTimeMillis()です。したがって、今から5秒後にはSystem.currentTimeMillis()+5000となります。

関連する問題