在我的应用程序中,我有一个系统,我可以从应用程序中的任何位置显示对话框,甚至可以从辅助线程显示对话框。当我收到来自服务器的一些通知,我只是将对话框放在用户眼前(对话框显示在从应用程序上下文打开的透明活动中)。我的问题是,当应用程序在后台并从服务器接收信号时,它会启动包含对话框的透明活动,所以应用程序会在前台显示 - 这是违反android(和我的)规则的。Android:如何防止活动在后台启动并前往
我创建了一个通知系统,以便显示来自服务器的收件人是状态栏。 我与透明活动(持有对话框)的通知相关联,所以当用户点击通知时,会被带到对话框。
Intent notificationIntent = new Intent(CVSApplication.getInstance(), CVSDialogActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(CVSApplication.getInstance(), 0, notificationIntent, 0);
问题是应用程序无论如何都被带到前面,即使用户没有点击通知。
当startActivity被调用时,有没有什么办法可以防止从背景返回CVSDialogActivity? 这里是一个开始CVSDialogActivity意图:
intent = new Intent(app, CVSDialogActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(USE_CUSTOM_CONTENT, false);
intent.putExtra(INSTANCE, this.hashCode());
我也试过这个变体:
intent = new Intent(app, CVSDialogActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.addFlags(Intent.FLAG_FROM_BACKGROUND);
intent.putExtra(USE_CUSTOM_CONTENT, false);
intent.putExtra(INSTANCE, this.hashCode());
,但是当startActivity(意向)被称为应用程序被带到前面(我想显示包含对话框的活动,但在后台,以及当用户点击通知时,将应用程序放到前台)。
谢谢, 亚历克斯