活动A
在其B
中启动活动startActivityForResult()
(使用onResume()
)。
B
依次显示对话框D
。当用户在对话框中选择一个选项时,B
会将结果返回给A
,后者会处理结果并完成。
当从应用中的其他活动触发A
时,所有这一切都正常。但是,如果A
作为通知中的待处理意图(从服务触发)启动,则会显示对话框D
。但是,即使在用户可以在对话框中和onStop()
完成之前选择任何内容之前,A
上也会立即调用B
。因此,对话框结果永远不会传递回A
。
配置根据此处的文档Set up a special activity PendingIntent
AndroidManifest.xml
<activity android:name=".A"
android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true"
android:theme="@style/AppTheme.Transparent">
</activity>
<activity android:name=".B"
android:excludeFromRecents="true"
android:theme="@style/AppTheme.Transparent">
</activity>
这是创建待处理意图和发送通知的方式。
Intent authIntent = new Intent(context, A.class);
authIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingAuthIntent =
PendingIntent.getActivity(
context,
0,
authIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
builder.setContentIntent(pendingAuthIntent);
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(NOTIFICATION_ID, builder.build());
如何让A
等待B
完成。