在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会被清空,这样用户的操作行为会丢失

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

更多相关文章

  1. android 完整地操作数据库--日记本实例
  2. Android中个人推崇的数据库使用方式
  3. AsyncTask的使用半解--!
  4. android中消费事件的概念以及使onClick和onLongClick同时发生
  5. 【Android游戏开发二十五】在Android上的使用《贝赛尔曲线》!
  6. Android(安卓)UI设计-google官方推荐
  7. Android(安卓)App的设计架构:MVC,MVP,MVVM与架构经验谈
  8. 【Touch&input 】处理控制器操作(16)
  9. Android(安卓)修图(换证件照背景,污点修复)

随机推荐

  1. Android折叠Toolbar
  2. ViewPager的切换动画
  3. ADT eclipse打开时出现Error: Error pars
  4. Android属性动画-Property Animation(三)
  5. Android -- 网络相关的系统服务启动简要
  6. android上传图片或文件
  7. # Android(安卓)不同的第三方库有相同的
  8. Android布局的一些属性和开关、创建log图
  9. Unity与Android交互
  10. Android 软键盘 禁用回车功能或者换成搜