Уведомление запускается каждый раз, когда я открываю приложение [дубликат]

Похоже, вы этого хотите.

Cow будет принимать &str или String.

use std::borrow::Cow;

#[derive(Debug, Eq, Hash, PartialEq)]
struct Complex<'a> {
    n: i32,
    s: Cow<'a, str>,
}

impl<'a> Complex<'a> {
    fn new<S: Into<Cow<'a, str>>>(n: i32, s: S) -> Self {
        Complex {
            n: n,
            s: s.into(),
        }
    }
}

fn main() { 
    let mut m = std::collections::HashMap::<Complex, i32>::new();
    m.insert(Complex::new(42, "foo"), 123);

    assert_eq!(123, *m.get(&Complex::new(42, "foo")).unwrap()); 
}

Комментарий о параметрах жизни:

Если вам не нравится параметр lifetime, и вам нужно работать только с &'static str или String, тогда вы можете использовать Cow<'static, str> и удалить другие параметры времени жизни из блока impl и определения структуры.

7
задан Flame of udun 10 April 2016 в 21:52
поделиться

1 ответ

Вам не нужно создавать Timestamp s. Вы можете сделать это с помощью Calendar.

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);

if(calendar.before(Calendar.getInstance())) {
    calendar.add(Calendar.DATE, 1);
}

alarmManager.set(AlarmManager.RTC_WAKEUP,
    calendar.getTimeInMillis(), pendingDinnerIntent);

Я бы также упомянул, что с KitKat, если ваш targetSdkVersion равен 19 или выше, метод AlarmManager#set() не является точным. Если вы хотите, чтобы ваш будильник срабатывал в определенное время, вам нужно использовать метод setExact*().

19
ответ дан Mike M. 25 August 2018 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: