我在构建通知时完成当前活动

时间:2016-08-30 09:18:22

标签: android

我想在当前活动(ChatActivity)中启动通知,当我触摸通知时,我想进入ChatOneActivity。

但是当我在ChatOneActivity时,我不希望当前的Activity(ChatActivity)完成(因为我正在接收数据)。当我按下后退按钮时,我想留在ChatActivity中。< / p>

(关键是我不希望ChatActivity完成,无论我当前在哪个活动中)。

那我该怎么办?

这是代码

    private void showNotification(String id, String message) {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext())
        .setSmallIcon(android.R.drawable.sym_action_email)
        .setContentTitle("You have a new message")
        .setContentText(message);
        Intent intent = new Intent(ChatActivity.this,ChatOneActivity.class);
        intent.putExtra("toId", id);
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(ChatActivity.this);
        stackBuilder.addParentStack(ChatOneActivity.class);
        stackBuilder.addNextIntent(intent);
        PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_CANCEL_CURRENT);
        builder.setContentIntent(pendingIntent);
        NotificationManager mNotificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(1, builder.build());
}

现在我进入ChatOneActivity,当我按下后退按钮时,我将返回桌面。表示ChatActivity已经完成,我不想要

1 个答案:

答案 0 :(得分:0)

我相信你不能做你想做的事。

首先,请查看此链接https://developer.android.com/guide/components/tasks-and-back-stack.html值得一读。

enter image description here

您正在从ChatActivity打开ChatOneActivity并将其保存在Back Stack中,Android系统可以在需要内存时终止您的活动,但会重新创建。

此外,您将ChatOneActivity添加为后台堆栈中的父级

TaskStackBuilder stackBuilder = TaskStackBuilder.create(ChatActivity.this);
        stackBuilder.addParentStack(ChatOneActivity.class);

如果您在父活动中并且按下了后退按钮,则应用程序将关闭是合理的。

如果你想从Activity1打开Activity2,当你按下返回到Activity1时,你不必做任何事情,Android Back Stack将管理行为。