android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序

在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity,结果总是存在好几个同样的activity,就算要返回的activity正在前台,点击消息后也会重新打开一个一样的activity,返回好几次才能退出,而不能像qq之类的点击通知栏消息回到之前存在的activity,如果存在就不再新建一个activity说的有点绕,如果是遇到此类问题的肯定能懂,没遇到过

大家好,又见面了,我是全栈君。

在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity,

结果总是存在好几个同样的activity,就算要返回的activity正在前台,点击消息后也会重新打开一个一样的activity,返回好几次才能退出,

而不能像qq之类的点击通知栏消息回到之前存在的activity,如果存在就不再新建一个activity

说的有点绕,如果是遇到此类问题的肯定能懂,没遇到过的估计看不懂我这混乱的表达了…..

经过查阅资料,通过如下方式解决了,

其实主要功劳就是第10行,

public void shownotification(String msg)
    {
        NotificationManager barmanager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notice = new Notification(android.R.drawable.stat_notify_chat,"服务器发来信息了",System.currentTimeMillis());
        notice.flags=Notification.FLAG_AUTO_CANCEL;
        Intent appIntent = new Intent(Intent.ACTION_MAIN);
        //appIntent.setAction(Intent.ACTION_MAIN);
        appIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        appIntent.setComponent(new ComponentName(this.getPackageName(), this.getPackageName() + "." + this.getLocalClassName())); 
        appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);//关键的一步,设置启动模式
         PendingIntent contentIntent =PendingIntent.getActivity(this, 0,appIntent,0);
        notice.setLatestEventInfo(this,"通知","信息:"+msg, contentIntent);
        barmanager.notify(STATUS_BAR_ID,notice);
       
    }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121394.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月10日 下午7:00
下一篇 2022年3月10日 下午7:00


相关推荐

  • 异步传输模式atm实际上是两种交换技术的结合_异步转移模式ATM

    异步传输模式atm实际上是两种交换技术的结合_异步转移模式ATMATM是AsynchronousTransferMode(ATM)异步传输模式的缩写ATM是一项数据传输技术。ATM是以信元为基础的一种分组交换和复用技术,它是一种为了多种业务设计的通用的面向连接的传输模式。它适用于局域网和广域网,它具有高速数据传输率和支持许多种类型如声音、数据、传真、实时视频、CD质量音频和图像的通信。ATM是在LAN或WAN上传送声音、视频图像和数据的宽带技术。它是一项

    2026年2月8日
    4
  • JAVA接入DeepSeek R1满血版,附带源代码以及注释,还有接入方法,教程

    JAVA接入DeepSeek R1满血版,附带源代码以及注释,还有接入方法,教程

    2026年3月16日
    2
  • 在pycharm中安装opencv_pycharm opencv

    在pycharm中安装opencv_pycharm opencv打开pycharm下方的terminal终端在路径下直接输入pipinstallopencv-python稍等片刻既安装成功在这里查看项目安装的模块点击左上方文件-设置-项目-Protect-Interpreter看到我们已经安装了opencv-python与numpy模块…

    2022年8月27日
    7
  • log4j自定义layout_log4j使用教程

    log4j自定义layout_log4j使用教程如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:   %m输出代码中指定的消息    %p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL    %r输出自应用启动到输出该log信息耗费的毫秒数    %c输出所属的类目,通常就是所在类的全名    %t输出产生该日志事件的线

    2022年8月22日
    13
  • springboot2.0整合kafka_spring与mybatis整合

    springboot2.0整合kafka_spring与mybatis整合首先引入POM依赖 <!–nosql数据库–> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependenc…

    2026年4月14日
    6
  • 2020年精心收集的十个Java开发网站

    2020年精心收集的十个Java开发网站不管谁手里都藏着些许自己觉得好用的网站,今天专门找大厂出来的同学同事觉得好用的网站分享给大家,如果这里有你没收藏还不知道觉得还蛮有用的网站可以给我点个赞,大家一起进步,一起学习,同时也可以分享你觉得好用实用的网站,分享快乐0.0好了,废话不多说,咋们上干货:一、GithubGitHub是一个面向开源及私有软件项目的托管平台,一个拥有数十亿行代码的网站,每天有数百万开发者聚集在一起,研究开源软件中存在的问题。对于我们程序猿来说,如果不想重复造轮子,就必须要站在巨人的肩膀上,那么巨人是谁呢?就是Gi

    2022年7月7日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号