3

Android 2.1、APIレベル7を対象とするアプリが必要です。ユーザーが受信したC2DM通知をクリックすると、一度に複数のアクティビティを起動します。これは、現在アクティビティを起動するために使用している方法です。

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

このメソッドでは、スタックに1つのアクティビティしか置くことができません。私が本当にやりたいのは、この方法を使用することです。

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

このメソッドは、Android3.0であるAPIレベル11でのみ使用可能であることを報告します。2.1との下位互換性を壊したくありません。Android 3.0に依存せずに、この効果を実現する方法を誰かが提案できますか?この新しいメソッドのソースを探してみましたが、まだ利用できないようです。

4

2 に答える 2

1

以下のように、アラームのターゲットとなる別のアクティビティを用意し、そこからインテント スタックを構築します。これはおそらく「getactivities」のようなものに非常に簡単に一般化できます。互換ライブラリにないのは残念です。

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();
  }
}
于 2012-07-02T11:04:38.120 に答える
-1

MisterSquonk がコメントで述べているように、(3.0 でも) 一度にアクティブにできるアクティビティは 1 つだけなので、「複数のアクティビティを一度に」起動することはできません。たとえそうであったとしても、複数のアクティビティが立て続けに開始され、どれが最後に起動されるかの保証がないため、ユーザー エクスペリエンスはどのようなものになるでしょうか。

それぞれが独自の UI を持たずに、アプリのさまざまな部分を同時に起動したいのではないかと思います。もしそうなら、共通のインテント フィルターに対して複数の BroadcastReceiver を実装する 1 つ以上のサービスを用意することをお勧めします。そのイベントの Broadcast を起動すると、複数のものが一度に起こされます。

于 2011-04-21T06:38:16.707 に答える