Android官方开发文档Training系列课程中文版:通知用户之创建不同导航方式的Activity

原文地址:http://android.xsoftlab.net/training/notify-user/navigation.html

设计通知时要考虑到用户所预想的导航体验。通常有以下两种情况:

常规的Activity(Regular activity)

  • 这里所启动的Activity是作为应用程序的正常流程部分出现的。

指定的Activity(Special activity)

  • 用户只会看到这个Activity,如果这个Activity是从通知启动的话。在直觉上,这个Activity是用来展示通知上的详细信息的。

设置常规的Activity

设置启动常规的Activity需要执行以下步骤:

  • 1.在清单文件中定义Activity的层级,最终的清单文件应该是这样的:
<activity
    android:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>
<activity
    android:name=".ResultActivity"android:parentActivityName=".MainActivity"><meta-data
        android:name="android.support.PARENT_ACTIVITY"android:value=".MainActivity"/>
</activity>
  • 2.创建一个基于回退栈的Intent,它用来启动父Activity(下面的代码可能有误,请自行验证。):
int id = 1;
...
Intent resultIntent = new Intent(this, ResultActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack
stackBuilder.addParentStack(ResultActivity.class);
// Adds the Intent to the top of the stack
stackBuilder.addNextIntent(resultIntent);
// Gets a PendingIntent containing the entire back stack
PendingIntent resultPendingIntent =stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
...
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(id, builder.build());

设置启动指定的Activity

启动指定的Activity不需要回退栈,所以不需要在清单文件中定义Activity的层级,也不需要在代码中使用addParentStack()构建回退栈。相反的,使用清单文件来设置Activity的任务模式,并通过getActivity()创建PendingIntent就可以完成创建。

  • 1.在清单文件中,为Activity添加如下属性:

    • android:name=”activityclass” 指定该Activity的全限定名称.
    • android:taskAffinity=”” 与在代码中设置的FLAG_ACTIVITY_NEW_TASK标志一同使用。这可以确保这个Activity不会进入应用程序的默认任务栈中。任何已有的任务栈皆不会受到这个属性的影响。
    • android:excludeFromRecents=”true” 将该Activity从Recents中排除,所以用户不会意外的再通过返回键启动这个Activity.

下面的代码段展示了这个属性的设置:

<activity
    android:name=".ResultActivity"
...android:launchMode="singleTask"android:taskAffinity=""android:excludeFromRecents="true">
</activity>
...
  • 2.构建及发射通知
    • a.创建一个用于启动Activity的Intent.
    • b.通过调用setFlags()方法并设置FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TASK标志来设置Activity将要启动一个新的、空的任务栈.
    • c.为Intent设置你所需要的选项.
    • d.通过调用getActivity()由Intent创建一个PendingIntent。你可以将这个PendingIntent作为setContentIntent()方法的参数。

下面的代码段演示了这个实现过程:

// Instantiate a Builder object.
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
// Creates an Intent for the Activity
Intent notifyIntent =new Intent(new ComponentName(this, ResultActivity.class));
// Sets the Activity to start in a new, empty task
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// Creates the PendingIntent
PendingIntent notifyIntent =PendingIntent.getActivity(this,0,notifyIntent,PendingIntent.FLAG_UPDATE_CURRENT
);
// Puts the PendingIntent into the notification builder
builder.setContentIntent(notifyIntent);
// Notifications are issued by sending them to the
// NotificationManager system service.
NotificationManager mNotificationManager =(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Builds an anonymous Notification object from the builder, and
// passes it to the NotificationManager
mNotificationManager.notify(id, builder.build());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上海交大张拳石:神经网络的变量交互可解释性研究

文 | Qs.Zhang张拳石知乎可解释性研究一直有两副嘴脸&#xff0c;一副烈火烹油繁花似锦&#xff0c;一副如履薄冰零丁洋里叹零丁。在2018年我开始发知乎是为了“活着”——被刷榜为王的风气屡屡打击之后&#xff0c;一朝中稿&#xff0c;倒过一口气来&#xff0c;终于可以跟大家…

基于TensorFlow Serving的深度学习在线预估

一、前言 随着深度学习在图像、语言、广告点击率预估等各个领域不断发展&#xff0c;很多团队开始探索深度学习技术在业务层面的实践与应用。而在广告CTR预估方面&#xff0c;新模型也是层出不穷&#xff1a; Wide and Deep[^1]、DeepCross Network[^2]、DeepFM[^3]、xDeepFM[^…

python库Camelot从pdf抽取表格数据以及python库camelot安装及使用中的一些注意事项

一、python库camelot安装及使用中的一些注意事项 1&#xff09;camelot方法有两种解析模式&#xff1a;流解析&#xff08;stream&#xff09;、格子解析&#xff08;lattice&#xff09;&#xff0c;其中格子解析能够保留表格完整的样式&#xff0c;对于复杂表格来说要优于流…

LeetCode 561. 数组拆分 I

1. 题目 给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) &#xff0c;使得从1 到 n 的 min(ai, bi) 总和最大。 示例 1:输入: [1,4,3,2]输出: 4 解释: n 等于 2, 最大总和为 4 min(1, 2) min(3, 4).来源&#xff1a;力扣&…

Android官方开发文档Training系列课程中文版:通知用户之更新或移除通知

原文地址&#xff1a;http://android.xsoftlab.net/training/notify-user/managing.html#Removing 当需要在不同时段发布同一事件类型的通知时&#xff0c;应当避免创建新的通知。相反的&#xff0c;应当考虑更新原有的通知&#xff0c;比如更改通知的某些值或者添加一些信息给…

论文浅尝 - 计算机工程 | 知识图谱可视化查询技术综述

本文转载自公众号&#xff1a;计算机工程。知识图谱可视化查询技术综述王鑫, 傅强, 王林, 徐大为, 王昊奋知识图谱作为符号主义发展的产物&#xff0c;是人工智能技术和系统中的重要组成部分&#xff0c;其在百科知识、生物信息、社交网络以及网络安全等领域被广泛运用。知识图…

用VS Code直接浏览GitHub代码 | 12.1K星

文 | 金磊(发自凹非寺)源 | 量子位“看GitHub代码”这件事上&#xff0c;还在网页上点点点&#xff1f;用开发工具看代码&#xff0c;不香吗&#xff1f;于是&#xff0c;它来了&#xff0c;它来了——可以直接用VS Code方式打开GitHub代码的工具。而且在短短几天时间里&#x…

APPKIT打造稳定、灵活、高效的运营配置平台

一、背景 美团App、大众点评App都是重运营的应用。对于App里运营资源、基础配置&#xff0c;需要根据城市、版本、平台、渠道等不同的维度进行运营管理。如何在版本快速迭代过程中&#xff0c;保持运营资源能够被高效、稳定和灵活地配置&#xff0c;是我们团队面临的重大考验。…

python编程:tabula、pdfplumber、camelot进行表格数据识别

三大神器助力Python提取pdf文档信息&#xff1a;https://cloud.tencent.com/developer/article/1395339 python编程&#xff1a;tabula、pdfplumber、camelot进行表格数据识别&#xff1a; https://blog.csdn.net/mouday/article/details/85057226 Python&#xff1a;解析PDF…

Android官方开发文档Training系列课程中文版:通知用户之大视图通知

原文地址&#xff1a;http://android.xsoftlab.net/training/notify-user/expanded.html#big-view 通知在通知栏中以两种风格呈现&#xff1a;正常视图与大视图。只有在通知展开的时候才会展示大视图。这只有在通知处于通知栏顶部时或者用户点击了通知时才会出现。 大视图于A…

论文浅尝-WSDM | Stepwise Reasoning for Multi-Relation QA

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;WSDM ’20链接&#xff1a;https://dl.acm.org/doi/pdf/10.1145/3336191.33718121.介绍知识图谱问答旨在利用知识图谱的结构化信息回答以自然语言提出的问题。当面对多关系问题时&#xff0c;现有基于…

从零搭建基于知识图谱的问答系统(以医疗行业为例)

清华大学人工智能研究院院长张钹院士2020年发表署名文章&#xff0c;首次全面阐述第三代人工智能的理念&#xff0c;提出第三代人工智能的发展路径是融合第一代的知识驱动和第二代的数据驱动的人工智能。基于知识图谱的推理&#xff0c;恰恰体现了第三代人工智能的特点。知识图…

Android官方开发文档Training系列课程中文版:通知用户之在通知中显示进度

原文地址&#xff1a;http://android.xsoftlab.net/training/notify-user/display-progress.html#FixedProgress 通知中包含了一个进度指示器&#xff0c;用来向用户展示一项正在进行中的工作状态。如果你可以确保任务会花费多长时间&#xff0c;并且可以在任何时候得知它完成…

PDFPlumber使用入门+python实现PDF中表格转化为Excel的方法

PDFPlumber使用入门&#xff1a;https://blog.csdn.net/weixin_48629601/article/details/107224376 python实现PDF中表格转化为Excel的方法:https://cloud.tencent.com/developer/article/1725528

LeetCode 109. 有序链表转换二叉搜索树(快慢指针+递归)

1. 题目 给定一个单链表&#xff0c;其中的元素按升序排序&#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链…

beeshell —— 开源的 React Native 组件库

背景 beeshell 是一个 React Native 应用的基础组件库&#xff0c;基于 0.53.3 版本&#xff0c;提供一整套开箱即用的高质量组件&#xff0c;包含 JavaScript&#xff08;以下简称 JS&#xff09;组件和复合组件&#xff08;包含 Native 代码&#xff09;&#xff0c;涉及前端…

论文浅尝 - ACL2020 | 用于链接预测的开放知识图谱嵌入

本文转载自公众号&#xff1a;PaperWeekly。 作者&#xff1a;舒意恒&#xff0c;南京大学硕士&#xff0c;研究方向&#xff1a;知识图谱。当前大量的知识图谱都是通过文本直接构建的。由于当前的知识图谱构建方法的局限性&#xff0c;其中难免包含对同一实体或关系…

论文审稿人可以下岗了?CMU都做出论文审稿机器人了!

文 | Sheryc_王苏机器学习真是越来越火了&#xff0c;这从各大会议逐年增加的投稿量上就可见一斑&#xff1a;AAAI21收到了9034篇投稿&#xff0c;NeurIPS20收到了9467篇投稿&#xff0c;一篇投稿至少要经过3位审稿人同行评议&#xff0c;耗费的人力可想而知。那么问题来了&…

Android官方开发文档Training系列课程中文版:多样屏幕之支持不同的屏幕尺寸

原文地址&#xff1a;http://android.xsoftlab.net/training/multiscreen/index.html 引言 Android运行于数以百计不同尺寸的设备上。范围小到手持移动电话&#xff0c;大到电视设备。因此&#xff0c;在设计APP时应当兼顾到尽可能多的屏幕尺寸。这样才能照顾到较多的潜在用户…

阿里云开源EasyTransfer:业界首个面向NLP场景深度迁移学习框架

阿里云开源EasyTransfer&#xff1a;业界首个面向NLP场景深度迁移学习框架 原文链接&#xff1a;https://zhuanlan.zhihu.com/p/267392773 阿里云正式开源了深度迁移学习框架 EasyTransfer&#xff0c;本文详细介绍了 EasyTransfer 框架的核心功能。机器之心发布&#xff0c;机…