意图不是singleTop活动回升(Intent not picked up by singleTo

2019-09-24 01:07发布

我有一个被定义为singleTop使得只有一个实例将存在一个活动。

   <activity
        android:name=".MyMainActivity"
        android:label="@string/app_name" 
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
        android:launchMode="singleTop" android:multiprocess="true">

我设置了一些数据的通知意图,并将其包含在一个的PendingIntent,并将其发送到通知管理器。

Intent notificationIntent = new Intent(context, MyMainActivity.class); 
notificationIntent.setAction(MyMainActivity.CustomInternalMessageAction);
notificationIntent.putExtra(MyMainActivity.ReceiveTestMessage, rawMessageText);

...
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
mNotificationManager.notify(number, notification);  

如果actiivty没有运行,意图启动通过的onCreate()如预期的活动。

如果活动正在运行,但在停止状态/不前景(如,当点击home键),并单击该通知,我的活动的onNewIntent()如预期被调用。

但是,如果活动已叫时,它在前台,然后onNewIntent()不会被调用。

我如何设置这个notificaiton让我singleTop活动被发送的意图,当它在暂停/停止状态(也仍然在我提到的其他情况下的功能)。 我想有一个标志,我notificationIntent对象上设置,但标志的功能不是对singleTop活动的情况下,真正明确。

Answer 1:

如果您的应用程序由多个活动组成,在保持活动需要被定义为singleTop ,以及如果你想收到onNewIntent()调用时活动活跃。

让我们假设主要活动是A并被定义为singleTop ,并从那里开始的活动B没有定义为singleTop 。 如果现在你选择调用应用程序的通知,该应用程序将开始活动BonNewIntent()没有被调用。

您也可以覆盖这个行为添加标志Intent.FLAG_ACTIVITY_CLEAR_TOP其删除活动B从栈和活动A会recive在电话会议上onNewIntent()



文章来源: Intent not picked up by singleTop Activity