3

我希望有一个针对 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 的情况下实现这种效果?我尝试寻找这种新方法的来源,但它似乎还不可用。

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 在评论中所说,任何时候只能激活一个 Activity(即使在 3.0 中也是如此),因此不可能同时启动“多个 Activity”。即使是这样,如果多个活动连续快速启动,并且无法保证最后启动哪个活动,那么用户体验将如何,因此留给用户交互。

我怀疑您实际上想同时唤醒应用程序的不同部分,而每个部分都没有自己的 UI。如果是这样,那么我建议拥有一个或多个服务,这些服务针对一个通用的 Intent 过滤器实现多个 BroadcastReceiver。当您触发该事件的广播时,会同时唤醒多个事物。

于 2011-04-21T06:38:16.707 回答