dazhuanzhuan 2017-06-15 16:56 采纳率: 0%
浏览 1275

Android后台运行广播中startActivity,应用总是重庆是个什么鬼

@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
String title = bundle.getString("title");
String body = bundle.getString("body");

//打开自定义的Activity
Intent intentNotifi = new Intent(context, NotificationActivity.class);
intentNotifi.putExtra("title", title);
intentNotifi.putExtra("body", body);
intentNotifi.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
context.startActivity(intentNotifi);
}

  • 写回答

1条回答 默认 最新

  • Boiling_Cola 2017-06-16 03:24
    关注

    (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP )导致的.

    先说说Intent.FLAG_ACTIVITY_NEW_TASK:

    当Intent对象包含这个标记时,系统会寻找或创建一个新的task来放置目标Activity,寻找时依据目标Activity的taskAffinity属性进行匹配,如果找到一个task的taskAffinity与之相同,就将目标Activity压入此task中,如果查找无果,则创建一个新的task,并将该task的taskAffinity设置为目标Activity的taskActivity,将目标Activity放置于此task。

    再说下Intent.FLAG_ACTIVITY_CLEAR_TOP

    当Intent对象包含这个标记时,如果在栈中发现存在Activity实例,则清空这个实例之上的Activity,使其处于栈顶。在使用默认的“standard”启动模式下,如果没有在Intent使用到FLAG_ACTIVITY_SINGLE_TOP标记,那么它将关闭后重建,如果使用了这个FLAG_ACTIVITY_SINGLE_TOP标记,则会使用已存在的实例;对于其他启动模式,无需再使用FLAG_ACTIVITY_SINGLE_TOP,它都将使用已存在的实例。

    所以
    在你的代码里加上这个:intentNotifi.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);就可以了。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?