大家好, 我正在服务中实施通知,一旦出现通知点击通知 - 它会打开一个活动。 我在我的服务类中有一个runnable中的代码,它每隔几秒就会运行一次:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(android.R.drawable.ic_dialog_email)
.setContentTitle(notificationTitle)
.setContentText(notificationMessage);
NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
builder.setStyle(bigText);
Intent resultIntent = new Intent(this, openemailactivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
Notification notification = builder.build();
notification.flags = Notification.FLAG_AUTO_CANCEL;
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(0, notification);
在我的名为“openemailactivity”的通知活动中,我有一个按钮,其中包含一个代码,用于将用户返回到名为“MainActivity”的主页活动:
btnReturnToMainScreen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
一切正常,直到我重新启动Android手机,服务在启动时加载(按预期),然后生成通知,然后我点击它。 然后,当我点击它时,“openemailactivity”活动也按照预期打开,然后我点击打开“MainActivity”(上面的代码)的按钮,然后它就完成了O.k。
现在问题就出现了!
打开其他活动后(“MainActivity”),然后服务再次弹出通知(Notification timer \ checking在一个运行不间断的定时Handler \ Runnable中运行) - 然后我点击通知本身那是创造的 - 它应该调用的活动(“openemailactivity”)不再被调用了! 而是 - 弹出最后一个被调用的活动(“MainActivity”),这是错误的!
只有当我重新启动手机,服务在启动时加载,生成通知,我点击它,它打开正确的活动,然后我从按钮(OnClickListener)调用代码时,问题才会开始。
我对如何解决这个问题一无所知。
您认为这可能是什么问题? 我做错了什么,我该如何解决?
感谢您的回复。
答案 0 :(得分:0)
奇怪但看起来我找到了答案(希望 - 它需要得到更全面的测试,因为在这种环境中总是存在惊喜)。
我试着设置:
resultIntent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
在服务中存在的通知代码中,在声明此变量(resultIntent)之后。
至于现在它看起来像是有效的! 通过查看此标志的Android文档,看起来它可能解释了我遇到的问题: {{3}} (搜索:“FLAG_ACTIVITY_CLEAR_TOP”的解释。