PendingIntent.FLAG_UPDATE_CURRENT重新创建活动

时间:2019-05-02 14:36:19

标签: android android-intent push-notification android-notifications android-pendingintent

我有一个通知,当我点击它时,我想启动应用程序(如果它仍未运行),但是如果应用程序已在运行,则我不想重新启动它。 因此,我在创建PendingIntent.FLAG_UPDATE_CURRENT时使用了PendingIntent标志。

我的代码:

private val notificationManager by lazy { NotificationManagerCompat.from(this) }

fun testPush() {
        val notificationBuilder = NotificationCompat.Builder(this, BuildConfig.APPLICATION_ID)
                .setSmallIcon(R.drawable.ill_launcher)

        notificationBuilder
                .setContentTitle("Title")
                .setContentText("Test text")
                .setContentIntent(buildPendingIntent())

        notificationBuilder
                .setAutoCancel(true)
                .priority = NotificationCompat.PRIORITY_DEFAULT

        notificationManager.notify(1, notificationBuilder.build())
}

 private fun buildPendingIntent(): PendingIntent {

        val intent = Intent(this, RootActivity::class.java)
        intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
        intent.putExtra("action", RootActivity.DEFAULT_INTENT)

        return PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
}

但是当我启动该应用程序并单击通知时,将重新创建该活动。

1 个答案:

答案 0 :(得分:1)

与其像您一样为Intent构建RootActivity,还需要为应用程序创建一个“启动Intent”。最简单的方法是调用PackageManager.getLaunchIntentForPackage()并传递您自己的包名称。在对Intent的调用中使用返回的PendingIntent.getActivity()

这将在您的应用未运行时启动它,否则,如果它已经在运行,它将仅将包含您的应用的现有任务置于前台。