Android:自定义对象里面的AlarmManager?

时间:2017-08-26 02:03:42

标签: android alarmmanager

我有一个自定义对象的ArrayList,每个对象包含以下3个变量:

 private boolean mReminderActivated;
 private int mReminderHour;
 private int mReminderMinutes;

我正在尝试从该Object内部设置一个Alarm,但是我无法从Object内部调用getSystemService。我只能在活动和碎片中设置警报吗?

1 个答案:

答案 0 :(得分:1)

您没有实例化AlarmManager。您可以按如下方式向Android询问现有实例:

AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

其中context是您当前的Android上下文,通常是您的活动。

请参阅https://developer.android.com/training/scheduling/alarms.html以供参考。

更新 - 根据以下评论,您的问题似乎是如何获取在您的对象中使用的上下文。这是一个建议:

将上下文传递给构造函数中的自定义类。所以你的课将看起来像这样(我称之为Foo,因为你没有提供名字)。我提供了一个setAlarm()方法,显示了如何获取AlarmManager。

class Foo {

    private boolean mReminderActivated;
    private int mReminderHour;
    private int mReminderMinutes;

        public Foo(Context context, boolean mReminderActivated, int mReminderHour, int mReminderMinutes) {
            this.context = context;
            this.mReminderActivated = mReminderActivated;
            this.mReminderHour = mReminderHour;
            this.mReminderMinutes = mReminderMinutes;
        }

        public void setAlarm() {
            AlarmManager alarmMgr = (AlarmManager)this.context.getSystemService(Context.ALARM_SERVICE);
        }

        ...
    }

然后,在您的活动中,您将按如下方式创建您的Foo对象:

Foo foo = new Foo(this, ....