android - 为什么我们使用 TaskStackBuilder?

标签 android android-notifications taskstackbuilder

为什么我们在创建通知时使用TaskStackBuilder?我不明白它背后的逻辑。

谁能解释一下。

public void showText(final String text){
    Intent intent = new Intent (this, MainActivity.class);
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addParentStack(MainActivity.class);
    stackBuilder.addNextIntent(intent);
    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
    Notification notification = new Notification.Builder(this)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle(getString(R.string.app_name))
            .setAutoCancel(true)
            .setPriority(Notification.PRIORITY_MAX)
            .setDefaults(Notification.DEFAULT_VIBRATE)
            .setContentIntent(pendingIntent)
            .setContentText(text)
            .build();
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(NOTIFICACTION_ID, notification);
}

最佳答案

假设您有一个电子邮件发送应用程序,其中有两个 Activity 。一个是MainActivity,它有电子邮件列表,另一个用于显示电子邮件(EmailViewActivity)。因此,现在当您收到新电子邮件时,您会在状态栏上显示通知。现在,您希望在用户单击该电子邮件时查看该电子邮件,并且在用户单击返回按钮后显示该电子邮件后,您希望显示电子邮件列表 Activity (MainActivity)。对于这种情况,我们可以使用 TaskStackBuilder。见下例:

public void showEmail(final String text){

        Intent intent = new Intent (this, MainActivity.class);
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(MainActivity.class);
        stackBuilder.addNextIntent(intent);
        Intent intentEmailView = new Intent (this, EmailViewActivity.class);
        intentEmailView.putExtra("EmailId","you can Pass emailId here");
        stackBuilder.addNextIntent(intentEmailView);
        PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
        Notification notification = new Notification.Builder(this)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(getString(R.string.app_name))
                .setAutoCancel(true)
                .setPriority(Notification.PRIORITY_MAX)
                .setDefaults(Notification.DEFAULT_VIBRATE)
                .setContentIntent(pendingIntent)
                .setContentText(text)
                .build();
        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(NOTIFICACTION_ID, notification);
    }

希望你能理解。

点击以下网址了解更多详情: http://developer.android.com/reference/android/support/v4/app/TaskStackBuilder.html http://developer.android.com/guide/components/tasks-and-back-stack.html http://www.programcreek.com/java-api-examples/index.php?api=android.app.TaskStackBuilder

关于android - 为什么我们使用 TaskStackBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36912325/

相关文章:

android - 带有 startActivityForResult 的 TaskStackBuilder

android - 使用 XML 将 Android TextView 中的首字母大写

android - 创建通知而不弹出

Android 解析推送通知在 Marshmallow 中不显示图标

android - 如何在android中以编程方式从通知栏中删除通知?

java - Android 有什么更好的?定时器还是闹钟?

Apple Silicon M1 上的安卓模拟器在 2022 年无法启动

android - 在android中检查Sim卡状态时"Called registerBroadcastReceiver twice"

android - TaskStackBuilder 过渡动画