Android O Notification Channel 的坑

Android O 不让后台起service, 要么改成JobSchedule,要么改成foreground service。

JobSchedule代码改动太大,图方便选了foreground service。

Foreground service就是service起来的同时要有一个notification让用户看到,就是原先偷偷摸摸的后台动作现在都得光明正大放到台前来。想了想觉得可以在notification channel上动下脑筋。

notification channel是android o新加的,凡是target o 的应用在o上弹notification都得创建一个notification channel,创建以后在系统设置里有一个统一的地方管理各个应用的通知,包括声音,优先级,震动等等,它有几个坑。

第一个坑,notification channel 创建后不能修改,上一篇文章已经讲过了就不讲了。

第二个坑,notification channel 的名字和描述是创建时自己设的,虽然你代码里多语言都考虑进去了,但是等你切换语言就会发现,它根本不管,创建时是啥语言还是啥语言,必须应用自己监听ACTION_LOCALE_CHANGED广播,然后重新设置一下名字和描述,真是 坑爹的设计。

第三个坑,前面说了想要起个foreground service 但是又不想让弹notification太显眼,于是想到把notification channel的优先级设成最低,这样弹出的notification不仅没有声音,而且也不会在状态栏显示出来,只有下拉通知栏才能看到,而且还是排在最底下,这样的通知基本能满足偷偷摸摸起service的需求。然而图样图森破,不管你之前设置的优先级是min 还是 low,只要你用这个channel起了一次service,系统会自动把这个channel的优先级调整为medium!文档描述里说好的创建后不再修改去哪里了啊!!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文出处: http://www.androidchina.net/6174.html Notification在...
    木木00阅读 12,396评论 3 32
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,606评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • 今天又下雨了,雨滴稀稀落落的,并不紧凑,和前几日的阳光明媚相比,天气阴沉了许多,我的心境也受了影响,有些抑郁寡欢,...
    Jessy自由行走的猫阅读 218评论 0 0
  • 新广出办发〔2016〕44号 各省、自治区、直辖市新闻出版广电局,新疆生产建设兵团新闻出版广电局,中央军委政治工作...
    熙枫文化阅读 283评论 0 0