Android---《第一行代码》(第3版)第九章-通过“问题树”的方式学习【多媒体-通知】


        最近,忙着面试、入职、毕业论文初稿等一堆事,所以暂停了这本书的学习。但是,我觉得还是要保证明天的输入,所以后面不保证一章一章的学,不过会尽可能的一小节(形成知识体系的闭环)学习与分享。


        有人可能会好奇,标题中的“问题树”是什么东西?其实这是我在【古典】dalao的《跃迁》这本书中学习到的,简单说一下,就是平时,我们经常是总结知识点,形成“知识树”(就是之前博客中的知识网络结构图),这个方法没错,也值得使用。但是,我们有时候从“问题树”出发,会有更强的思路。个人觉得这两种方法,因人而异。可以都尝试一下,然后选择自己比较容易接受的,或者结合两种方法一起来用。


        今天学习的是【通知】

主要的三个问题如下:

问题1.发送一个通知的整个流程里面涉及的哪些对象呢?

问题2.如何创建这些对象?

问题3.如何发送一个通知?

问题4.如何取消一个通知?

常规的问题解决后,再看看有别的延伸吗?

问题5.通知还有别的什么操作吗?

那么我们一一来揭开谜底。


1.发送一个通知的整个流程里面涉及的哪些对象呢?

通知主要的就是3个成员,管理者,通知,渠道。我们可以看到渠道和通知有多个。

问题1.1:那么管理者怎么知道是哪一个呢?因此,我们可以给通知和渠道加上唯一的id,这样就可以做区分了。 


问题2.如何创建这些对象?

成员

如何创建

管理者(NotificationManager)

通过调用Context的getSystemService(Contxt.NOTIFICATION_SERVICE)方法获取。

渠道(NotificationChannel)

通过NotificationChannel(渠道id,渠道名字, 重要等级)创建一个渠道,

然后通过管理者的createNotificationChannel(渠道实例)

通知(Notification)

通过NotificationCompat.Builder(context,渠道id)创建一个通知


问题3.如何发送一个通知?

这个比较简单,通过管理者实例的notify(渠道id,通知)方法,就可以将notification发送到对应渠道中。 


问题4.如何取消一个通知?

1.在创建通知时,通过setAutoCancel(true) 设置自动取消

2.或者调用管理者的cancel(通知id)手动取消通知


 问题5.通知还有别的什么操作吗?

问题5.1:如何实现通知的点击事件

通过Intent和PendingIntent,创建意图,然后在创建通知的时候setContentIntent(PendingIntent的实例)

问题5.2:如何设置图片通知

在创建通知的时候通过setStyle()方法可以设置图片。


具体细节,可以阅读《第一行代码》(第3版)p355-366。

原创文章 17 获赞 4 访问量 5180

猜你喜欢

转载自blog.csdn.net/yqq577/article/details/105728443
今日推荐