2014-06-28 38 views
1

我想知道用户是否打开了应用程序,因为当我从GCM接收到广播时,我创建了一个意向应用程序的通知。当用户点击通知时,它将开始一个新的主要活动的意图,将旧的主要活动放在后面的堆栈上,然后,当用户请求后退导航时,它将关闭所插入的活动并打开(再次为他)在堆栈上的最后一项活动。检查Gcm意向服务上的活动是否还活着

汇总:XActivity

意图XActivity新通知:

屏幕上的当前活动。

用户点击通知,所以堆栈为XActivity,XActivity

我该如何检测XActivity是否已经显示并且只是向它发送额外的内容?

谢谢!

+0

Android清单设置启动模式之前检查该变量。由于在发射模式下读取文档的android单一实例模式通关http://developer.android.com/guide/topics /manifest/activity-element.html – Sush

回答

3

将您的活动的启动模式设置为singleTop,然后以具有标记FLAG_ACTIVITY_NEW_TASK的意图启动它。这将启动活动,如果它没有运行,否则运行实例将被使用。

+0

正在运行的实例将从意图中接收额外的数据? –

+0

是的,您可以重写Activity的'OnNewIntent()'方法以从意图接收数据。 – Price

+0

但是周期会是怎样?先onCreate然后onNewIntent? (如果活动在意图调用中死了) –

1

你可以声明布尔变量:boolean isOnPause;

然后覆盖onResume()方法,并使isOnPause = false; 重写onPause()方法并make isOnPause = true;

,并开始新的意向

+0

如果您的应用程序在GCM消息到达时未运行,该怎么办? – Price

+0

问题是这样开始的:“我想知道用户是否打开了应用程序”,并且我认为我的答案为此提供了解决方案。如果应用程序已打开,则活动将定义onResume(),如果它不是opend,则onPause(); –