【问题标题】:Start activity when a GCM message received收到 GCM 消息时开始活动
【发布时间】:2016-12-23 12:21:20
【问题描述】:

我有一个可以通过 Google Cloud Messaging 接收消息的应用。我需要在收到云消息时自动启动一个活动,必要时唤醒设备。

虽然它可能看起来是一个糟糕的 UI 设计,强制向用户展示某些东西,但这个应用程序对用户的工作至关重要,因此当云消息到了。

我尝试在收到云消息时拨打startActivity(),并且当应用程序在后台时它可以工作。但是,一旦从最近的应用列表中删除该应用,新的 Activity 就不会启动。

有什么方法可以实现我想要做的吗?

【问题讨论】:

  • 您可以只显示一条可以清楚地显示给用户的 toast 消息。
  • 当应用程序在后台运行时,toast 无法正常工作,我相信您可以使用 crouton 来做到这一点。
  • 通常你会显示一个提醒通知,它会启动一个活动。这样它也会显示在锁定屏幕上...
  • 首先,如果需要唤醒设备,可以设置priority to HIGH。因为它允许 GCM 服务唤醒睡眠设备并打开与服务器的网络连接。即使您在应用列表中删除了活动,也可以启动活动,这个 SO 问题 2431353922252065 可能会对您有所帮助
  • 当应用程序在后台时,您的意图服务不会在通知后触发。通知将到达通知系统尝试。因此,您的活动没有开始。您可以看到这个答案。这是针对 fcm 但 gcm 和 fcm 相同的东西stackoverflow.com/a/39161526/3073945 但你解决了这个问题吗?我也在搜索这个结果。

标签: android google-cloud-messaging


【解决方案1】:

我假设您正在使用 IntentService 接收消息。

如果是这种情况,您可以使用标志启动 Activity:

Intent intent = new Intent (this, MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

【讨论】:

  • 这正是我目前正在做的。如果应用已关闭并从最近的应用列表中删除,则不会启动活动。
  • @LahiruChandima 你确定当你关闭并从最近的应用列表中删除它时应用本身没有被杀死吗?参考here.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多