2016-06-05 2 views

ответ

0

Если вы хотите, оставшееся время сохраните установленное время, чтобы вызвать ваш сигнал тревоги в кэше

long timeOfTrigger = System.getCurrentcurrentTimeMillis() + 7 * AlarmManager.INTERVAL_DAY; 

    //use RTC instead of ELAPSED_REALTIME 
    //RTC calculates absolute time while 
    //ELAPSED_REALTIME calculates time that has passed since the android system boot. 
    am.set(AlarmManager.RTC,timeOfTrigger, pi); 
    Context context = getActivity(); 
    SharedPreferences sharedPref = context.getSharedPreferences(Context.MODE_PRIVATE); 

    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putLong("TimeWhenAlarmStarts", timeOfTrigger); 
    editor.commit(); 

Это позволит сохранить значение времени запуска в кэше. Затем в любое время (даже если вы перезагрузили приложение или телефон) вы можете найти оставшееся время только на

SharedPreferences sharedPref = context.getSharedPreferences(Context.MODE_PRIVATE); 
long timeOfTrigger = sharedPref.getLong("TimeWhenAlarmStarts" , defaultValue); 
long remainingtime = timeOfTrigger - System.getCurrentTimeInMillis(); 
// the default value can be anything and is used if the SharedPreferences where empty 
+0

Если я изменю время андроида RTC будет изменено? –

+0

Wait RTC вычисляет время с помощью [UTC] (https://en.wikipedia.org/wiki/Coordinated_Universal_Time), поэтому, даже если вы измените часовой пояс, RTC не будет затронут, поэтому приведенный выше код должен работать нормально. –

+0

спасибо, что нашел этот способ для resloved problem.I использовать jude телефон AUTO_TIME, когда он меняет время телефона, это приложение не сможет открыть –

Смежные вопросы