2015-04-01 48 views
0

我知道我们可以在通知这样开放的推出活动:回调推送通知开放的Android

NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
Intent targetIntent = new Intent(this, MainActivity.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, targetIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
builder.setContentIntent(contentIntent); 
//... 

但是如果代替午餐的活动,我想运行一个回调,什么样的一些onPushOpen ,那么选择那里如何处理通知点击?

回答

-2

你可以使用EventBus才达到这一点。只需发布一些类似onPushOpen()的事件并将其捕获到任何你想要的地方。制造水货像:

Intent targetIntent = new Intent(this, NaughtyActivity.class); 

并使NaughtyActivity使用没有布局。只用它来发布事件并完成。

0

您可以在清单申报的活动,称之为NotificationClickHandlerActivity,您将设置为目标的通知,而不是MainActivity的未决的意图。

在这个新活动的onCreate方法中,根据意图中的信息(action,categories,extras)调用getIntent,确定接下来需要打开什么,启动您确定或执行的新目标活动其他动作,然后从onCreate中调用完毕并立即返回。

如果一个活动像这个处理程序一样在onCreate中完成,它将永远不会显示给用户,所以他不会意识到它甚至存在,他会看到的是您可能从其中启动的其他活动。

另外,请记住,因为他们将在UI线程上执行,并且将响应用户输入阻止你的应用程序,你不应该在此处理活动的onCreate方法做长时间运行的操作。如果你必须做一些长时间运行,把它放在一个异步任务的子类中(无论是静态嵌套类的处理活动的,或者完全独立的类),然后开始从onCreate方法这个任务的一个实例,并在之后的调用finish任务已启动。该任务将继续在后台运行。如果任务需要上下文来执行任何操作,请确保通过调用getApplicationContext将其传递给应用程序上下文,并且不要传递活动本身,否则会发生内存泄漏。