PendingIntent.getBroadcast () никогда не возвращает ноль - PullRequest
1 голос
/ 01 сентября 2011

Я пытаюсь найти PendingIntent моего BroadcastReceiver, который был вызван с использованием AlarmManager.

Я использую PendingIntent.getBroadcast(), используя те же аргументы, с которыми он был вызван, однакоон никогда не возвращает ноль.

public MyObject(Context context, AnotherObject object) {

    Intent i;
    i = new Intent(context, MyReceiver.class);
    i.putExtra(AnotherObject.SOMETHING, "string");
    i.putExtra(AnotherObject.SOME_BOOL, true);

    PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, PendingIntent.FLAG_NO_CREATE);

    if (pi == null) {
        Log.v("help", "PendingIntent is null");
    }
    else {
        Log.v("help", "PendingIntent is not null");
    }
}

Вот мой тестовый драйвер:

that = new MyObject(this, object);

LogUtil.startAlarm(this, object);

that = new LogUtil(this, object);

Это startAlarm:

public static void startAlarm(Context that, AnotherObject object) {

    Intent i;
    i = new Intent(that, MyReceiver.class);
    i.putExtra(AnotherObject.SOMETHING, "string");
    i.putExtra(AnotherObject.SOME_BOOL, true);

    long interval = 60 * 1000; // Minute
    long first = SystemClock.elapsedRealtime() + interval;

    PendingIntent pi = PendingIntent.getBroadcast(that, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);

    // Schedule the alarm
    AlarmManager am2 = (AlarmManager) that.getSystemService(Context.ALARM_SERVICE);
    am2.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, first, interval, pi);
    Log.v("help", "Started alarm");
}

Вот мой вывод журнала:

09-02 11:18:54.330: VERBOSE/help(9621): PendingIntent is not null
09-02 11:18:54.330: VERBOSE/help(9621): Started alarm
09-02 11:18:54.330: VERBOSE/help(9621): PendingIntent is not null

Почему говорится, что оно никогда не будет нулевым, даже до того, как я включу будильник?Разве getBroadcast() не должен возвращать ноль?

1 Ответ

3 голосов
/ 01 сентября 2011

Я пытаюсь найти PendingIntent моего BroadcastReceiver, который был вызван с использованием AlarmManager.

Хм, почему?

Я использую PendingIntent.getBroadcast (), используя те же аргументы, с которыми он был вызван, однако он никогда не возвращает ноль.

Это не должно. Он создаст PendingIntent, если его еще нет для эквивалентного базового Intent. Можно утверждать, что имя метода должно быть createBroadcast(), чтобы прояснить этот момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...