在Android应用中,有一种场景是点击通知栏,唤起应用,此场景有如下几种情况:

1 应用在前台,点击通知,直接执行跳转操作;

2 应用在后台,将后台进程唤起到前台,执行跳转操作;

3 应用没有启动,启动应用,执行跳转操作;

4 应用在后台被回收,恢复应用,然执行跳转操作。

目前以下几种方式能够实现上述效果:

1 通过设置Intent的flag,代码如下:

Intent intent = new Intent(this, MainActivity.class);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setAction(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

具体的细节还需要在确定,但是存在的一个问题是没有办法通过Intent传递参数;

2 通过ActivityManager获取RunningTasks,如果存在该应用对应的task,则通过

ActivityManager的moveTaskToFront(rti.id, ActivityManager.MOVE_TASK_WITH_HOME);方法将应用唤起到前台,

然后处理相关操作;如果没有相关的task,则直接启动应用即可;

此方法存在的问题是,如果结合Notification使用时,用户点击Notification的时机是不确定的,只能通过广播处理,会比较麻烦;

3 将应用中的MainActivity设置为singleTask,这样点击通知时,如果Activity存在,则会将应用唤起到前台,如果不存在则会创建

新的Activity,

此方法存在的问题是,从Notification跳转,会直接显示MainActivity,跳过launch页,另外,如果MainActivity设置为singleTask之后

再次跳转到MainActivity,那么MainActivity之上已经存在的Activity会被清空,这样用户的操作行为会丢失

每种方式都存在各自的优缺点,需要根据实际需求选取,如果有其它更好的方式,还望多多交流

Android将后台应用唤起到前台的方法相关推荐

  1. android唤醒前台,Android将后台应用唤起到前台的方法 (SDK 4.0, ActivityLifecycleCallbacks)...

    对于4.0以上的机型也是采用通过Application注册ActivityLifecycleCallbacks接口,对于4.0以下的机型我们会尝试反射ActivityThread中的mInstrume ...

  2. Android将后台应用唤起到前台,唤醒APP;

    包名启动即可: Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName ...

  3. Android 将后台应用切换到前台

    目录 需求分析 代码实现 需求分析 1.项目中有一个需求,需要调用打开本地安装好的第三方 APP,然后在某个时刻需要将自己的 APP 仍然从后台切换到前端(置顶). 2.效果如下:点击 "开 ...

  4. Android 系统(73)---Android判断你的应用在前台还是在后台

    Android判断你的应用在前台还是在后台 /*** 判断应用是否是在后台*/public static boolean isBackground(Context context) {Activity ...

  5. android 切回前台,Android退到后台与切到前台

    最近开发了一款TV版app,主要功能是视频通话,所以要求机顶盒是一开机,就要把app打开,因为时刻有别人打过来.然后点击返回按钮,需要把app切到后台,但是app仍需要存活,需要收到消息.所以这里就设 ...

  6. Android退到后台与切到前台

    最近开发了一款TV版app,主要功能是视频通话,所以要求机顶盒是一开机,就要把app打开,因为时刻有别人打过来.然后点击返回按钮,需要把app切到后台,但是app仍需要存活,需要收到消息.所以这里就设 ...

  7. Android 中监控APP「进入后台」「进入前台」

    利用ActivityLifecycleCallbacks监听所有activity的生命周期 解释下registerActivityLifecycleCallbacks这个方法,只要app中有一个act ...

  8. Android 关于后台杀死App之后改变服务器状态的一些尝试

    前言: 如题,我的需求是:我需要在App在后台运行(未退出),调出最近运行记录,杀死App服务时,程序能够向服务器发送一条指令,以此达到我想要的目的. Android方面刚刚才开始玩,我一开始想的是可 ...

  9. Android 系统(215)---Android O_GO后台启动服务改动

    Android O_GO后台启动服务改动 Android O_GO后台启动服务改动 1. 问题现象 应用在适配Android O/GO的系统时,会发现后台启动不了服务,会报出如下异常,并强退: jav ...

最新文章

  1. Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置
  2. 加密工具类 - CryptoUtils.java
  3. 如何用visual studio 2019配置OnnxRuntime
  4. java 广义表_数据结构:广义表的实现(Java)
  5. 创业公司产品经理如何画好原型图
  6. 轻量级的网页Rank算法,365Rss.cn的Rank技术解释以及算法讨论(一)
  7. cgo的效率 golang_golang CGO FAQ TIPS : cgo 从 C 传递 slice 到 go
  8. Windows Mobile 数独游戏及全部源码
  9. Android开发技术周报 Issue#70++
  10. C++/C学习笔记(九)
  11. javascript操作表格案例讲解
  12. 将ESXi加入到vCenter中进行管理
  13. Halcon PDF文档(hdevelop_users_guide)学习总结之五——关于图形窗口
  14. 倒立摆源码 旋转倒立摆 完整全功能 程序 倒立摆 pid算法 程序使用时可根据硬件需要自行调节
  15. java淘宝客开发(一)
  16. WINCE下ActiveSync连接故障修复办法
  17. 量化交易之股票数据的获取——同花顺软件
  18. java 上传文件 md5_上传到文件选择器时的md5校验和
  19. 模板方法模式(java语言实现)
  20. Linux centOS 7.2 命令行下 静默安装部署oracle11g数据库

热门文章

  1. 我年薪100万,全身上下没有超过100块的衣服:存钱,是最顶级的自律
  2. winform窗体打开动画效果
  3. 对数符号lg和ln的含义
  4. 怎么给视频加配音?试试这些制作方法吧
  5. 让你的APK好好“减肥”一下吧!
  6. 为游戏而生:ALIENWARE、戴尔G系列新品亮相
  7. python sanic_sanic使用记录
  8. 玄武科技招股书失效:首次冲刺港交所上市折戟,毛利率连年下滑
  9. idea main函数不能运行_idea 导入项目后不能执行main方法
  10. Java就业面试题大全