问题描述
- 关于两个应用之间Activity的跳转
-
当应用没有启动的时候,点击桌面图标,进入应用,这个过程可以以正常的方式启动,找到程序的入入口跳转即可!但是如果当应用启动过并在后台运行,点击桌面启动,这个时候Intent改怎么设置了?
而且如果此时后台运行的Activity不是程序的入口,该怎么跳转?就好比我的应用是A,需要跳转到的应用为B,在B没有启动的情况下,A应用可以跳转到B
的MainActivity中,可以实现.
Intent intent = new Intent();
intent.setClassName("packageName", "ClassName");//ClassName为B应用程序的入口
startActivity(intent);但当B已经启动了在后台,而且B的堆栈的topActivity不是MaingActivity的时候,这个时候需要怎么跳转了?
Intent怎么设置?就好比桌面跳转到应用程序一样,点击程序,进入MainActivity,在进入OtherActivity,
再按home键回到桌面,再点击程序回到了OtherActivity
解决方案
当不触发oncreate时,会触发onNewIntent(Intent intent)
解决方案二:
你跳转时传入的是哪个,就是哪个
解决方案三:
建议你先了解一下 activity的launchMode。 http://www.cnblogs.com/ok-lanyan/articles/2593782.html
你提到的现象我读了,但不是很理解你到底要表达的意思。但是我可以给你解释下你提到的这个过程是怎么回事
“桌面跳转到应用程序一样,点击程序,进入MainActivity,在进入OtherActivity,再按home键回到桌面,再点击程序回到了OtherActivity”
android 是通过一种 Activity 栈的方式来管理 Activity 的,一个 Activity 的实例的状态决定它在栈中的位置。处于前台的 Activity 总是在栈的顶端,当前台的 Activity 因为异常或其它原因被销毁时,处于栈第二层的 Activity 将被激活,上浮到栈顶。当新的 Activity 启动入栈时,原 Activity 会被压入到栈的第二层。一个 Activity 在栈中的位置变化反映了它在不同状态间的转换.
综上,你就应该明白了,如果从MainActivity进入到OtherActivity,实际上已经将OtherActivity提到了栈顶,此时你点击home,再回来,自然 显示的就是OtherActivity了,因为它在栈顶。至于如何使用intent,和正常启动没有任何变化。