转自:http://blog.csdn.net/mengweiqi33/article/details/41285699
最近查了很久这个事情,分享给大家,
原理很简单,一个Activity在manifet里声明了android:parentActivityName;这时候通过Activity左上角的返回按钮点击返回,
启动声明的父Activity,总会先调用父Activity的OnDestroy方法,具体如下面所说:
android:name="com.example.helloworld.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.helloworld.MainActivity" >
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.helloworld.MainActivity" />
DisplayMessageActivity为子Activity,而MainActivity为父Activity,点击
DisplayMessageActivity的左上角返回按钮的时候,调用逻辑如下:
MainActivity.onDestroy()MainActivity.onCreate(null)MainActivity.onStart()
解决方案是:
为设置MainActivity属性android:launchMode=singleTop
顺便脑补android:parentActivityName的作用,就是为了左上角给子Activity加一个返回按钮,具体信息如下:
个人补充:注意安卓中当从一个Activity跳转到子Activity时,在Manifest.xml文件中,在子Activity中设置了android:parentActivityName时,在子Activity的左上角会出现一个返回按钮,此时该返回按钮和系统的返回按钮是不一样的。该返回按钮表示返回上一级目录,而系统的返回按钮为上一个视图,具体可参看:http://www.zhihu.com/question/20568219所以两者的行为会不一样,导致上面所说的,当点击该返回按钮时,会调用父Activity的onCreate方法,而点击系统返回按钮则不会,而是返回父Activity跳转到子Activity前的视图。