主要参考文献http://blog.csdn.net/liuhe688/article/details/6754323 http://
http://blog.csdn.net/feng88724/article/details/6412638
http://blog.csdn.net/tiancizhenai/article/details/7037787
1:standard 表明activity的正启动,每次会重新生成一个新的activity。
2:singleTop 如果当前的activity处于activity栈的顶端,再次启动该activity则不会重新生成一个activtiy,如果这个Activity不在Activity栈的顶端,再次启动则会重新生成一个Activity并将其放到Activity栈的顶端。
3:singleTask 当启动当前的Activity时候发现Activtity栈中已经有该Activity的实例,则使在这个Activity之上的activity全部从栈中出栈,使此Activity至于栈的顶端,显示在界面中。
如果在栈顶,则接受intent,否则,该intent会被丢弃,但是该task仍会回到前台。
4:singleInstance 这种启动模式比较特殊,因为它会启用一个新的栈结构,将Acitvity放置于这个新的栈结构中,并保证不再有其他Activity实例进入。
注意:(一)当选择后两种方式时 如果按Home键退出,再长按Home键进入,此时onNewIntent不被访问,因为再次进入的时候没有被发起Intent 。只有调用startActivity(Intent i);时才会激活onNewIntent。(这种特性可以用来监听到Home键,哈哈)
(二)如果选择加载模式为singleInstance,则这时如果有用到TTS的话,在进行TTS检测时在onActivityResult中返回的结果会是TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL;而其他模式则不会出现这种情况。