Как приблизить PendingIntent getActivities в Api уровня 7 (Android 2.1)? - PullRequest
3 голосов
/ 21 апреля 2011

Мне бы хотелось, чтобы приложение, предназначенное для Android 2.1, уровень API 7, запускало сразу несколько действий, когда пользователь нажимает на полученное уведомление C2DM. Это метод, который я сейчас использую для запуска своей активности:

public static PendingIntent getActivity (Context context, int requestCode, Intent intent, int flags)

Этот метод позволяет мне поместить только одно действие в стек. Что я действительно хочу сделать, это использовать этот метод:

public static PendingIntent getActivities (Context context, int requestCode, Intent[] intents, int flags)

Этот метод сообщает, что он доступен только для API уровня 11, то есть Android 3.0. Я не хочу нарушать обратную совместимость с 2.1. Кто-нибудь может подсказать, как мне добиться этого эффекта без зависимости от Android 3.0? Я попытался найти источник для этого нового метода, но он пока недоступен.

Ответы [ 2 ]

1 голос
/ 02 июля 2012

То, что вы делаете, - это отдельное действие, которое является целью тревоги, и создайте стек намерений, как показано ниже.Вероятно, это можно легко обобщить во что-то очень похожее на «getactivities» - жаль, что его нет в библиотеках compat.

public class AlarmActivity extends Activity {

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

    intent = new Intent(this, ChildActivity.class);
    startActivity(intent);

    finish();
  }
}
0 голосов
/ 21 апреля 2011

Как говорит MisterSquonk в комментариях, только одно действие может быть активным одновременно (даже в 3.0), поэтому запуск «нескольких действий одновременно» не будет возможен.Даже если бы это было так, как будет работать пользователь с несколькими действиями, начинающимися в быстрой последовательности и без гарантии того, что будет запущен последним, и, следовательно, пользователю останется взаимодействовать с ним.Подозреваю, что вы на самом деле хотите разбудить разные части вашего приложения одновременно, каждый из которых не имеет собственного интерфейса.Если это так, то я бы предложил иметь одну или несколько служб, которые реализуют несколько BroadcastReceivers против общего фильтра намерений.Когда вы запускаете трансляцию этого события, сразу несколько вещей проснутся.

...