Android: AlarmManager 在自定义对象中?

Android: AlarmManager inside a custom Object?

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

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

我正在尝试从该对象内部设置一个警报,但我无法从该对象内部调用 getSystemService。只能在 Activity 和 Fragment 中设置闹钟吗?

您没有实例化 AlarmManager。您向 Android 请求现有实例,如下所示:

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

其中 context 是您当前的 Android 上下文,通常是您的 Activity.

参考https://developer.android.com/training/scheduling/alarms.html

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

在构造函数中将上下文传递给您的自定义 class。所以你的 class 看起来像这样(我称它为 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);
        }

        ...
    }

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

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