zoukankan      html  css  js  c++  java
  • android Intent onNewIntent 什么时候调用

    1.activity A 的lanch model 为singleTop
    此刻,A在activity 栈顶,那么就会调用A 的onNewIntent
    如果A不在栈顶,则不会调用。
    2.activity A 的lanch model 为 singTask
    如果task 里面已经有activity a 的实例,再次启动A就会调用onNewTask
    3.如果activity A 的lanch model 为singleInstance
    启动过activity A ,有activity A 的实例,那么就会调用onNewIntent
    4.如果activity A 的启动模式为standard
    启动activity的时候,
    1).我增加了FLAG_ACTIVITY_CLEAR_TOP 和FLAG_ACTIVITY_SINGLE_TOP,那么如果有曾经启动过A,则会调用onNewIntent

                    Intent intent = new Intent(SecondActivity.this,MainActivity.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    2)如果此时A在activity栈顶,那么只需要加FLAG_ACTIVITY_SINGLE_TOP 就可以让A执行onNewIntent

    参考:https://www.cnblogs.com/zawn/archive/2012/10/23/2735875.html

    Activity 的 onNewIntent方法的调用可总结如下:

      在该Activity的实例已经存在于Task和Back stack中(或者通俗的说可以通过按返回键返回到该Activity )时,当使用intent来再次启动该Activity的时候,如果此次启动不创建该Activity的新实例,则系统会调用原有实例的onNewIntent()方法来处理此intent.

      且在下面情况下系统不会创建该Activity的新实例:

      1,如果该Activity在Manifest中的android:launchMode定义为singleTask或者singleInstance.

      2,如果该Activity在Manifest中的android:launchMode定义为singleTop且该实例位于Back stack的栈顶.

      3,如果该Activity在Manifest中的android:launchMode定义为singleTop,且上述intent包含Intent.FLAG_ACTIVITY_CLEAR_TOP标志.

      4,如果上述intent中包含 Intent.FLAG_ACTIVITY_CLEAR_TOP 标志和且包含 Intent.FLAG_ACTIVITY_SINGLE_TOP 标志.

      5,如果上述intent中包含 Intent.FLAG_ACTIVITY_SINGLE_TOP 标志且该实例位于Back stack的栈顶.

      上述情况满足其一,则系统将不会创建该Activity的新实例.

      根据现有实例所处的状态不同onNewIntent()方法的调用时机也不同,总的说如果系统调用onNewIntent()方法则系统会在onResume()方法执行之前调用它.这也是官方API为什么只说”you can count on onResume() being called after this method”,而不具体说明调用时机的原因.

    注意:微博分享的实现方式就是通过增加flag 调用你的activity 的onNewIntent.当时我还想不通,为什么,我的activity 不是sigleTop 的也可以调用到onNewIntent上来。原来是动态加了flag,如果你已经有了实例,比如加flag:FLAG_ACTIVITY_SINGLE_TOP,系统就会去检查,如果已经有实例,那么就调用你的onNewIntent.

  • 相关阅读:
    jstat使用
    oracle 定期copy 大表统计信息(分区表)
    PL/SQL注册码
    Linux系统--命令行安装weblogic10.3.6
    oracle 11.2.0.4 dbca创建数据库时 报错ORA-12532
    自动重建索引脚本
    oracle 添加登陆数据库触发器--记录IP 地址
    oracle 触发器
    oracle 定位SQL
    查询rman 备份信息集
  • 原文地址:https://www.cnblogs.com/caoxinyu/p/10568572.html
Copyright © 2011-2022 走看看