Я установил будильник, который каждый час вызывает приемник вещания. Этот получатель пытается загрузить данные из базы данных sqlite.
Проблема в том, что список напоминаний пуст. Те же самые коды работают в деятельности, но не в получателе. Есть ли что-то, что я должен изменить, чтобы получить доступ к базе данных в приемнике. Это проблема с другим контекстом в деятельности и в получателе?
Метод "setAlarm" - тот, который я использую, чтобы создать сигнал тревоги для действия.
Привет
public class AppReceiver extends BroadcastReceiver {
private static final String TAG = "AppReceiver";
@Override
public void onReceive(Context context, Intent intent) {
ReminderRepository mRepository; = new ReminderRepository(context);
List<Reminder> list = mRepository.getAllReminder();
for(Reminder r : list) {
// TODO
}
}
}
public class ReminderRepository {
private ReminderDao mReminderDao;
private List<Reminder> mAllReminder;
public DisposalCalenderRepository(Context context) {
ReminderRoomDatabase db = ReminderRoomDatabase.getDatabase(context);
mReminderDao = db.reminderDao();
mAllReminder = mReminderDao.getAll();
}
public List<Reminder> getAllReminder(){
return mAllReminder;
}
}
@Dao
public interface ReminderDao {
@Query("SELECT * from reminder")
List<Reminder> getAll();
}
public void setAlarm(){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.HOUR, 1);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
AlarmManager alarmMgr = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(mContext, AppReceiver.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(mContext, 0, i, 0);
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_HOUR, alarmIntent);
}