博客
关于我
android-Notification点击跳转Activity
阅读量:98 次
发布时间:2019-02-26

本文共 1981 字,大约阅读时间需要 6 分钟。

在Android应用中,当通知通知用户点击后,用户通常会按返回键退出应用。但在Gmail等应用中,由于需要在邮件列表页面再次点击返回键才能退出,这种设计可能会影响用户体验。

通知跳转Activity的实现

为了实现类似Gmail的行为,我们需要在应用中定义两个Activity:ParentActivitySubActivity。当通知点击后,跳转到SubActivity,按返回键后,系统会退回到ParentActivity,再按返回键才能退出应用。

实现方法

1. 简单场景

在这种简单场景中,我们只需要在PendingIntent中指定SubActivity。默认情况下,Android系统会将当前的Activity替换为新的Activity。

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

2. 复杂场景

如果需要退回到ParentActivity,我们需要在PendingIntent中设置多个跳转目标。我们可以使用getActivities()方法来指定一系列目标Activity。

Intent[] intents = new Intent[2];intents[0] = Intent.makeRestartActivityTask(new ComponentName(context, MainActivity.class));intents[1] = new Intent(context, SubActivity.class);PendingIntent contentIntent = PendingIntent.getActivities(context, 0, intents, PendingIntent.FLAG_CANCEL_CURRENT);

注意事项

  • FLAG_CANCEL_CURRENT:如果当前Activity和PendingIntent中的intent相同,会取消当前的Activity,并使用PendingIntent中的目标Activity替换。
  • Manifest配置:确保指定的Activity在AndroidManifest中定义,并设置android:launchMode="singleTask"android:taskAffinity="",以避免多次启动同一个Activity。
  • Activity栈管理:通过makeRestartActivityTaskgetActivities方法,确保Activity栈能够正确管理,防止重复或错误的跳转。

示例代码

// 创建Activity数组Intent[] makeIntentStack(Context context) {    Intent[] intents = new Intent[2];    intents[0] = Intent.makeRestartActivityTask(new ComponentName(context, MainActivity.class));    intents[1] = new Intent(context, SubActivity.class);    return intents;}// 创建并显示Notificationvoid showNotification(Intent intent) {    Notification notification = new Notification(R.drawable.status_icon, "Hello World ticker text", System.currentTimeMillis());    PendingIntent contentIntent = PendingIntent.getActivities(this, 0, makeIntentStack(this), PendingIntent.FLAG_CANCEL_CURRENT);    notification.setLatestEventInfo(this, "Title", "Hey, shall we have dinner tonight?", contentIntent);    notification.flags |= Notification.DEFAULT_ALL;    mNM.notify(1, notification);}

通过以上方法,我们可以实现类似Gmail的通知跳转场景,确保用户按返回键后能够正确退回到ParentActivity。

转载地址:http://nusk.baihongyu.com/

你可能感兴趣的文章
poj 1151 (未完成) 扫描线 线段树 离散化
查看>>
POJ 1151 / HDU 1542 Atlantis 线段树求矩形面积并
查看>>
poj 1163 数塔
查看>>
POJ 1177 Picture(线段树:扫描线求轮廓周长)
查看>>
Qualitor checkAcesso.php 任意文件上传漏洞复现(CVE-2024-44849)
查看>>
POJ 1182 食物链(并查集拆点)
查看>>
POJ 1185 炮兵阵地 (状态压缩DP)
查看>>
POJ 1195 Mobile phones
查看>>
POJ 1228 Grandpa's Estate (稳定凸包)
查看>>
poj 1236(强连通分量分解模板题)
查看>>
poj 1258 Agri-Net
查看>>
quagga 和 zebos
查看>>
poj 1286 Necklace of Beads
查看>>
POJ 1321 棋盘问题
查看>>
poj 1321(回溯)
查看>>
Qt高级——Qt元对象系统源码解析
查看>>
qt调用vs2008编写的dll动态库(隐式调用)
查看>>
Qt读取注册表默认值
查看>>
poj 1679 判断MST是不是唯一的 (次小生成树)
查看>>
POJ 1703 Find them, Catch them
查看>>