大家好,我有两个Activity,我希望从Acitivty1启动Activity2以后,再从Activity2跳到Activity1时,不要重新执行Activity1的onCreate方法,同时下次从Activity1跳到Activity2的,2也不重新执行onCreate方法。也就是两个Activity都只执行一次初始化的操作,以后相互跳转时,不要再初始化化了。

解决方案 »

  1.   

    activity的四种加载模式
    在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。
    在android里,有4种activity的启动模式,分别为: 
    standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
    singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。
    singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
    singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。
    这些启动模式可以在功能清单文件AndroidManifest.xml中进行设置,<activity>中的launchMode属性。
    相关的代码中也有一些标志可以使用,比如我们想只启用一个实例,则可以使用 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 标志,这个标志表示:如果这个activity已经启动了,就不产生新的activity,而只是把这个activity实例加到栈顶来就可以了。
    Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);  
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);  
    startActivity(intent);  
      

  2.   

    activity的四种加载模式
    在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。
    在android里,有4种activity的启动模式,分别为: 
    standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
    singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。
    singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
    singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。
    这些启动模式可以在功能清单文件AndroidManifest.xml中进行设置,<activity>中的launchMode属性。
    相关的代码中也有一些标志可以使用,比如我们想只启用一个实例,则可以使用 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 标志,这个标志表示:如果这个activity已经启动了,就不产生新的activity,而只是把这个activity实例加到栈顶来就可以了。
    Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);  
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);  
    startActivity(intent);