首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何更新Android前台服务的通知文本?

如何更新Android前台服务的通知文本?
EN

Stack Overflow用户
提问于 2011-04-03 07:41:55
回答 5查看 71.2K关注 0票数 152

我有一个Android的前台服务设置。我想要更新通知文本。我正在创建如下所示的服务。

如何更新在此前台服务中设置的通知文本?更新通知的最佳实践是什么?任何示例代码都将不胜感激。

代码语言:javascript
运行
AI代码解释
复制
public class NotificationService extends Service {

    private static final int ONGOING_NOTIFICATION = 1;

    private Notification notification;

    @Override
    public void onCreate() {
        super.onCreate();

        this.notification = new Notification(R.drawable.statusbar, getText(R.string.app_name), System.currentTimeMillis());
        Intent notificationIntent = new Intent(this, AbList.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
        this.notification.setLatestEventInfo(this, getText(R.string.app_name), "Update This Text", pendingIntent);

        startForeground(ONGOING_NOTIFICATION, this.notification);

    }

我在我的主活动中创建服务,如下所示:

代码语言:javascript
运行
AI代码解释
复制
    // Start Notification Service
    Intent serviceIntent = new Intent(this, NotificationService.class);
    startService(serviceIntent);
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-03 11:52:49

我认为使用相同的惟一ID和使用新信息的Notification再次调用startForeground()是可行的,尽管我还没有尝试过这种情况。

更新:根据评论,您应该使用NotifcationManager更新通知,您的服务将继续停留在前台模式。看看下面的答案。

票数 68
EN

Stack Overflow用户

发布于 2013-11-22 10:31:11

当您想要通过startForeground()更新通知集时,只需构建一个新的通知,然后使用NotificationManager来通知它。

关键点是使用相同的通知id。

我没有测试重复调用startForeground()来更新通知的场景,但我认为使用NotificationManager.notify会更好。

更新通知不会将服务从前台状态移除(这只能通过调用stopForground来完成);

示例:

代码语言:javascript
运行
AI代码解释
复制
private static final int NOTIF_ID=1;

@Override
public void onCreate (){
    this.startForeground();
}

private void startForeground() {
    startForeground(NOTIF_ID, getMyActivityNotification(""));
}

private Notification getMyActivityNotification(String text){
    // The PendingIntent to launch our activity if the user selects
    // this notification
    CharSequence title = getText(R.string.title_activity);
    PendingIntent contentIntent = PendingIntent.getActivity(this,
            0, new Intent(this, MyActivity.class), 0);

    return new Notification.Builder(this)
            .setContentTitle(title)
            .setContentText(text)
            .setSmallIcon(R.drawable.ic_launcher_b3)
            .setContentIntent(contentIntent).getNotification();     
}

/**
 * This is the method that can be called to update the Notification
 */
private void updateNotification() {
    String text = "Some text that will update the notification";

    Notification notification = getMyActivityNotification(text);

    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(NOTIF_ID, notification);
}

documentation状态

要设置通知以便可以更新,请通过调用NotificationManager.notify()使用通知ID发出通知。要在发出通知后更新该通知,请更新或创建一个NotificationCompat.Builder对象,从该对象构建一个Notification对象,并使用您之前使用的相同ID发出Notification。如果先前的通知仍然可见,系统将根据Notification对象的内容对其进行更新。如果先前的通知已被驳回,则会创建一个新的通知。

票数 256
EN

Stack Overflow用户

发布于 2018-03-12 14:48:35

改进了安卓8.0+中的Luca Manzo answer,当更新通知时,它将发出声音并显示为平视。

为了防止出现这种情况,您需要添加setOnlyAlertOnce(true)

所以代码是:

代码语言:javascript
运行
AI代码解释
复制
private static final int NOTIF_ID=1;

@Override
public void onCreate(){
        this.startForeground();
}

private void startForeground(){
        startForeground(NOTIF_ID,getMyActivityNotification(""));
}

private Notification getMyActivityNotification(String text){
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){
        ((NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(
        NotificationChannel("timer_notification","Timer Notification",NotificationManager.IMPORTANCE_HIGH))
}

        // The PendingIntent to launch our activity if the user selects
        // this notification
        PendingIntent contentIntent=PendingIntent.getActivity(this,
        0,new Intent(this,MyActivity.class),0);

        return new NotificationCompat.Builder(this,"my_channel_01")
        .setContentTitle("some title")
        .setContentText(text)
        .setOnlyAlertOnce(true) // so when data is updated don't make sound and alert in android 8.0+
        .setOngoing(true)
        .setSmallIcon(R.drawable.ic_launcher_b3)
        .setContentIntent(contentIntent)
        .build();
}

/**
 * This is the method that can be called to update the Notification
 */
private void updateNotification(){
        String text="Some text that will update the notification";

        Notification notification=getMyActivityNotification(text);

        NotificationManager mNotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(NOTIF_ID,notification);
}
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5528288

复制
相关文章
热图pheatmap()函数
此次例子,我们选择了一套GEO数据库的肺癌数据,数据编号为GSE19804,120个样本,其中包含60个癌症样本和60个癌旁正常样本,前面我们使用t检验,并对p值进行BH校正,筛选fdr小于0.01的基因中前40个在癌症相对于正常样本中显著差异表达的基因进行热图绘制。
微点
2019/11/01
3.6K0
Seurat中小提琴图,热图顺序的调整
因为顺序变了,要是想保持原来每个样本对应的颜色的话,也要改变小提琴的颜色.如: 原始的样子
生信编程日常
2020/04/01
6.4K0
Seurat中小提琴图,热图顺序的调整
无代码调整聚类热图分支顺序
聚类热图根据不同的聚类算法和距离计算方式,获得的热图分支结构会有一些不同。有时,我们也希望能在不改变分支结构的基础上,对热图分支的顺序进行一些调整,这就是推文聚类热图怎么按自己的意愿调整分支的顺序?的出发点。
生信宝典
2022/01/18
8250
无代码调整聚类热图分支顺序
【R语言】热图绘制-heatmap函数
其实每一张热图后面都对应一个表达矩阵。如上图所示,每一行是一个基因,每一列是一个样本。每一个小的色块,就是这个基因在这个样本中的表达量。只是这里用颜色的深浅来表示基因表达值的高低而已,颜色越红,表达值越高。颜色越蓝表达值越低。
生信交流平台
2022/09/21
2.4K0
【R语言】热图绘制-heatmap函数
聚类热图怎么按自己的意愿调整分支的顺序?
NGS系列文章包括NGS基础、在线绘图、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程)、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step))、批次效应处理等内容。
生信宝典
2020/09/21
4.5K0
R语言第二章数据处理(9)数据合并
=========================================
用户1359560
2019/03/21
2.4K0
数据处理的R包
整理数据的本质可以归纳为:对数据进行分割(Split),然后应用(Apply)某些处理函数,最后将结果重新组合(Combine)成所需的格式返回,简单描述为:Split - Apply - Combine。plyr包是Hadley Wickham为解决split – apply – combine问题而写的一个包。使用plyr包可以针对不同的数据类型,在一个函数内同时完成split – apply – combine三个步骤。plyr包的主函数是**ply形式的,函数名的第一个字符代表输入数据的类型,第二个字符代表输出数据的类型,其中第一个字符可以是(d、l、a),第二个字母可以是(d、l、a、_ ),不同的字母表示不同的数据格式,d表示数据框格式,l表示列表,a表示数组,_则表示没有输出。
润森
2020/02/17
4.7K0
数据处理的R包
深入对比数据科学工具箱:Python和R之争
在真实的数据科学世界里,我们会有两个极端,一个是业务,一个是工程。偏向业务的数据科学被称为数据分析(Data Analysis),也就是A型数据科学。偏向工程的数据科学被称为数据构建(Data Building),也就是B型数据科学。 从工具上来看,按由业务到工程的顺序,这个两条是:EXCEL >> R >> Python >> Scala 在实际工作中,对于小数据集的简单分析来说,使用EXCEL绝对是最佳选择。当我们需要更多复杂的统计分析和数据处理时,我们就需要转移到 Python和R上。在确定工程实施和大数据集操作时,我们就需要依赖Scala 的静态类型等工程方法构建完整的数据分析系统。 Scala和Excel是两个极端,对于大多数创业公司而言,我们没有足够多的人手来实现专业化的分工,更多情况下,我们会在Python和R上花费更多的时间同时完成数据分析(A型)和数据构建(B型)的工作。而许多人也对 Python和R的交叉使用存在疑惑,所以本文将从实践角度对Python和R中做了一个详细的比较。
生信宝典
2019/08/30
1.1K0
深入对比数据科学工具箱:Python和R之争
21. R 茶话会(二:包函数名冲突问题)
参见:https://mp.weixin.qq.com/s/oxElKitqQjwtD8HkpKk_JQ
北野茶缸子
2021/12/17
1.2K0
21. R 茶话会(二:包函数名冲突问题)
HeatMap(热图)
热图是数据分析的基本图形之一,可以方便的表示大量数据的关联关系。 在这里我们使用seaborn绘制热图 我这里直接上代码了 因为是用jupyter notebook做的 #!/usr/bin/env python # coding: utf-8 # In[1]: import matplotlib.pyplot as plt import seaborn as sns # In[2]: sns.set() # In[3]: who # 导入数据 # In[4]: flights_long = sns.l
DrugScience
2021/02/04
1.1K0
HeatMap(热图)
R 语言绘制热图的 10 种方法
说在前面 此前我们已经推送了不少深入解读的文章,今天希望做一点新的尝试——介绍 R 语言绘图。这一期分享 R 语言绘制热图的案例,希望大家通过案例感受 R 语言的强大,同时消除对热图等看似高大上的图形的恐惧感,在文献阅读时更加从容,今后也尝试去绘制这样炫酷的图,如果能够放到文章里面就完美了。 什么是 R 语言?R 语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。我之所以学 R 语言,一方面是希望能够利用 R 语言将原始数据转化为可放入论文中的精美图形,另一方面,大数据时代已经到来,每
企鹅号小编
2018/03/02
24.9K2
R 语言绘制热图的 10 种方法
R语言dplyr包分组求均值遇到的一个问题及解决办法
R语言里的dplyr这个包group_by()函数加上summarise()函数分组计算方差均值等非常好用。比如一组数据
用户7010445
2020/12/18
3.9K0
R语言dplyr包分组求均值遇到的一个问题及解决办法
【工具】深入对比数据科学工具箱:Python和R之争
文章目录 概述 应用场景对比 应用Python的场景 应用R的场景 数据流编程对比 参数传递 数据传输与解析 基本数据结构 MapReduce 矩阵操作 数据框操作 数据流编程对比的示例 数据可视化对
小莹莹
2018/04/24
1.4K0
【工具】深入对比数据科学工具箱:Python和R之争
【经典文章】运营优化的秘密武器:重新认识热图的力量!
主编注:这篇文章获得业内很高的关注。是宋星老师的另一篇讲述如何优化网站页面尤其是着陆页的经典文章。 引言   之前发布的文章:《优化高跳出率着陆页的正确姿势——忘掉跳出率!》获得了超出我想象的猛烈地关注和转发,着实让我惊诧。大家对于其中所讲述的利用热力图进行分析的方法感到新奇,很多朋友希望我能够再多讲讲关于热图分析的内容。   在优化高跳出率页面(尤其是推广单页)的这篇文章中,我介绍了1. 热图相关的关键指标;2. 如何通过热图分析着陆页和推广单页;3. 热图和事件监测的关系,这篇文章我想带
iCDO互联网数据官
2018/03/02
9150
【经典文章】运营优化的秘密武器:重新认识热图的力量!
整理了一些自己可能会用到的R包
rPlotter 非常方便的在图片中抽提颜色 #devEMF Rstudio不能够直接输出emf格式图片,借助devEMF包可以实现 简单用法 library(devEMF) emf("bar.emf") plot(1,1) dev.off() 或者借助savePlot()函数在原生的Rgui中运行 library(ggplot2) ggplot()+geom_point(aes(x=1,y=1)) savePlot(filename="practice",type="emf")#文件名不用添加后缀 S
用户7010445
2020/09/22
1.8K0
整理了一些自己可能会用到的R包
circlize画热图
circlize软件包从0.4.10版本开始,可以使用circos.heatmap(),画圆形热图,圆形热图不但漂亮,而且可以缩小图片占用的面积。circos.heatmap()功能 大大简化了环状热图的创建。下面是circos.heatmap()功能的用法。
生信编程日常
2020/07/14
1.6K0
R语言数据集合并、数据增减、不等长合并
1、merge(a,b),纯粹地把两个数据集合在一起,没有沟通a、b数据集的by,这样出现的数据很多,相当于a*b条数据;
悟乙己
2019/05/28
13.6K0
R语言包_plyr
不再是循环,而是向量操作,这个包的目的是简化apply类函数。 其相当于split和apply函数的整合。
用户1147754
2019/05/26
1.1K0
Photoshop抠图-边缘调整
当遇到背景也比较复杂的时候,就要用到终极大招“调整边缘”了。事实上,任何一种选区工具如魔棒工具、多边形套索工具、钢笔工具等等,
一朵灼灼华
2022/08/05
1.7K0
Photoshop抠图-边缘调整
生信星球 DAY-6 dplyr基本函数
用户10402030
2023/07/02
1710

相似问题

从脚本加载img时,jquery加载div

30

jQuery在加载时执行函数()

10

JQuery Ajax,加载img

34

在页面加载时激活jQuery img和文本操作

22

用于在加载div时更改IMG的jQuery代码

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文