gpt4 book ai didi

android - 使用 PendingIntent 时不考虑 singleTask 和 singleInstance?

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:41 25 4
gpt4 key购买 nike

我有一个 launchMode 设置为 singleTask 的 Activity :

<activity
android:name="com.blah.blah.MyActivity"
android:launchMode="singleTask">
</activity>

我有一个正在进行的通知,其中包含启动该 Activity 的 PendingIntent:

Intent activityIntent = new Intent( this,
MyActivity.class );
TaskStackBuilder stackBuilder = TaskStackBuilder.create( this );
stackBuilder.addParentStack( MyActivity.class );
stackBuilder.addNextIntent( activityIntent );
PendingIntent resultingActivityPendingIntent = stackBuilder.getPendingIntent( REQUEST_CODE,
PendingIntent.FLAG_UPDATE_CURRENT );
...
m_notificationBuilder.setContentIntent( resultingActivityPendingIntent );
startForeground( ONGOING_NOTIFICATION_ID,
m_notificationBuilder.build() );

当我与现有的 MyActivity 交互时,我点击主页并通过启动器重新启动 MyActivity,MyActivity 的 onNewIntent() 会按预期被调用。

问题是,当我与现有的 MyActivity 交互时,我单击正在进行的通知,通过 onCreate() 创建一个新的 MyActivity,并通过 销毁现有的>onDestroy()。我预计 MyActivity 的 onNewIntent() 会被调用。为什么这没有发生?

我尝试了这些答案但没有成功:

最佳答案

您的问题是由于使用了TaskStackBuilder。此代码导致您的问题:

Intent activityIntent = new Intent( this,
MyActivity.class );
TaskStackBuilder stackBuilder = TaskStackBuilder.create( this );
stackBuilder.addParentStack( MyActivity.class );
stackBuilder.addNextIntent( activityIntent );
PendingIntent resultingActivityPendingIntent =
stackBuilder.getPendingIntent(REQUEST_CODE,
PendingIntent.FLAG_UPDATE_CURRENT );

当您以这种方式使用 TaskStackBuilder 时,它会在生成的 Intent 中设置额外的标志,导致任务在之前被重置(任务中的所有 Activity 都被销毁)您的 Activity 已启动。

改为使用:

Intent activityIntent = new Intent( this,
MyActivity.class );
PendingIntent resultingActivityPendingIntent =
PendingIntent.getActivity(this, REQUEST_CODE,
activityIntent, PendingIntent.FLAG_UPDATE_CURRENT );

关于android - 使用 PendingIntent 时不考虑 singleTask 和 singleInstance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28258404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com