zoukankan      html  css  js  c++  java
  • android onNewIntent 为什么要在onNewIntent的时候要显示的去调用setIntent

    原因:
    当调用到onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的Intent。

        @Override
        protected void onNewIntent(Intent intent) {
            super.onNewIntent(intent);
            setIntent(intent);
            initIntentData();
        }

    onNewIntent调用时机 :
    如果IntentActivity处于任务栈的顶端,也就是说之前打开过的Activity,现在处于
    I/@@@philn(12410): onPause
    I/@@@philn(12410): onStop 状态的话
    其他应用再发送Intent的话,执行顺序为:
    I/@@@philn(12410): onNewIntent
    I/@@@philn(12410): onRestart
    I/@@@philn(12410): onStart
    I/@@@philn(12410): onResume
    对应的lanchumodel 必须为singtop 或者singTask;

    launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,不要忘记,系统可能会随时杀掉后台运行的Activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法,一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法

    参考资料:
    http://www.cnblogs.com/zenfly/archive/2012/02/10/2345196.html
    http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0520/2897.html

    我就有一个需求,当时我不知道onNewIntent这回事,结果就悲剧了,自己做不出来。后来同事提醒,才知道。恩,过来人就是过来人。
    就是比如:
    我当前在activity A在 tab a 页面,然后,来了一条push,我现在要跳转到tab b, 但是我这个activity A必须是一个,不能点一个push 就一个,那么怎么做呢?怎么在不启动activity的情况下,改变tab, 这时候onNewIntent就出现了。 在里面处理一个想要切换到哪个tab,然后跳转,就ok了。

  • 相关阅读:
    第十天python3 函数的销毁
    第九天python3 闭包
    第八天pyhton3 函数的返回值、作用域
    第七天python3 函数、参数及参数解构(二)
    音视频不同步排查方法
    第六天python3 函数、参数及参数解构(一)
    第五天python3 内建函数总结
    第四天python3 python解析式-生成器-迭代器

    [转载]基于Java反序列化
  • 原文地址:https://www.cnblogs.com/caoxinyu/p/6647746.html
Copyright © 2011-2022 走看看