我有一个活动可以从服务器发送的通知中打开,这也可以从应用程序上的其他活动打开,但是有一个问题。当从通知中打开活动时,如果用户尝试返回该应用程序转到后台并且下次打开它将显示登录(主)活动而不是调用堆栈中的最后一个活动,如果应用程序处于活动状态或处于后台状态,并显示任何错误消息,也不会停止调试过程。
这是我的通知代码
void client(Bundle bundle){
String title = bundle.getString("title");
String message = bundle.getString("message");
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
seticon(builder);
builder.setContentTitle(title);
builder.setContentText(message);
if(message.length()>25){
builder.setStyle(new NotificationCompat.BigTextStyle()
.bigText(message));
}
Intent resultIntent = new Intent(getBaseContext(), Client_form.class);
PendingIntent resultPendingIntent =null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(Cliente_form.class);
stackBuilder.addNextIntent(resultIntent);
resultPendingIntent=
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
}
builder.addAction(R.drawable.common_plus_signin_btn_icon_light,"Open",resultPendingIntent);
builder.addAction(R.drawable.ic_mail_outline_black_24dp,"Test",null);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(id_notifi++, builder.build());
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), uri);
r.play();
}
预期的行为是,如果活动在调用堆栈顶部打开,并且按下后退应该返回到上一个活动。
知道为什么会发生这种情况或如何使其按预期工作?
答案 0 :(得分:1)
我遇到了类似的问题,它与我的StackBuilder实现有关,在某些配置中,它会自动调用最初调用通知或通知广播接收器的活动的onDestroy方法。
尝试完全删除Stackbuilder,如果这样可以解决问题,那么你可以找到确切的问题,我可能会添加错误的类。