Android点击通知页面不刷新intent无法传值问题

由于项目是单Activity多fragment实现的,做极光推送处理的时候要求点击通知栏,跳转到消息那个fragment,我们知道在推送里面通过重写BroadcastReceiver通过bundle拿到值设置跳转的,很遗憾,那个Activity一直是在前台的,并且启动模式是:singleTask结果即便我的intent是:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);

依然不行,最后通过查资料发现:

在Activity里面重写onNewIntent方法这样变可以拿到intent传递的值,方法如下:
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
  //需要注意的是:直接调用该方法的intent而不是通过getIntent()来取
    }

虽然比较简单但是遇到挺棘手的,在这里记录一下。看了下这个onNewInten方法:

处理onNewIntent()来通知片段管理器没有保存状态。如果您正在处理新的意图,并且可能要更改片段状态,那么一定要先调用这里的超类。否则,如果您的状态被保存,但是活动没有停止,那么您可能会得到一个onNewIntent()调用,它发生在onResume()之前,并且在那时尝试执行fragment操作将抛出IllegalStateException,因为fragment管理器认为状态仍然被保存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章