下面的函数显示一个待处理意图的通知。当屏幕解锁并收到通知时,以下方法将创建通知。
当用户点击通知时,它会首先打开ChildActivity,在Backback上,它会关闭子活动并打开MainActivity-> subActivity。在backpress上关闭subActivity并显示MainActivity。
将根据MainActivity的Intent动作启动子活动
在解锁屏幕中,以下方法根据我的要求给出了上述结果和完美结果。
public void showNotification(Context context, String extraUri){
final Intent mainActivityIntent = new Intent(context, MainActivity.class);
mainActivityIntent.putExtra(MainActivity.INTENT_EXTRA_ACTIVE, 1232123);
// this will help determine to start subactivity from mainActivity
mainActivityIntent.setAction(MainActivity.MAIN_ACTIVITY_CHANGED);
mainActivityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
final TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
taskStackBuilder.addNextIntent(mainActivityIntent);
final Intent intent = new Intent(context, ChildActivity.class);
intent.putExtra(ChildActivity.EXTRA_URI, extraUri);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
taskStackBuilder.addNextIntent(intent);
final PendingIntent pendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Title")
.setContentText("Message Body")
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
问题
当屏幕被锁定并点击通知时,它会要求解锁屏幕,在解锁时,它会启动应用程序。但是
首先它显示SubActivity,而不是在背面按下它显示ChildActivity,在ChildActivity的背景上它显示MainActivity。
因此活动的顺序发生了变化。
正确的顺序是 MainActivity-> SubActivity-> ChildActivity(TopMost)(在未锁定的屏幕中发生)
先谢谢。