Android: Как начать новое занятие, но только если оно уже существует? - PullRequest
0 голосов
/ 16 июня 2011

Я использую Android-C2DM, и когда я получаю сообщение, которое было отправлено на мое устройство, я хочу либо обновить отображение (если определенная активность видна на экране), либо создать уведомление в строке состояния (если нет ).

Все работает, кроме проверки, активна ли Активность. То, что я ищу, это либо способ проверить, активна ли активность (тогда я могу просто окружить приведенный ниже код оператором if), либо, если это невозможно, я думаю, мне нужен другой способ обойти все процесс.

В C2DMBaseReceiver:

Intent i = new Intent(context, Show.class);
i.putExtra("id", id);
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

In Show.java:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Log.v(TAG, "onNewIntent");
    // Update the display
}

1 Ответ

1 голос
/ 16 июня 2011

Иметь глобальный объект, который указывает на действие, которое хочет узнать о сообщении. В своей деятельности, установите это, пока вы находитесь на экране (возобновлено). В приемнике вызовите мероприятие, если оно установлено, в противном случае разместите свое уведомление в строке состояния.

Вы можете сделать более формальные реализации этого шаблона, но просто использовать глобал просто и в большинстве случаев достаточно.

...