近期查了非常久这个事情。分享给大家,
原理非常easy,一个Activity在manifet里声明了android:parentActivityName;这时候通过Activity左上角的返回button点击返回,
启动声明的父Activity,总会先调用父Activity的OnDestroy方法,详细如以下所说:
<activity
android:name="com.example.helloworld.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.helloworld.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.helloworld.MainActivity" />
</activity>
DisplayMessageActivity为子Activity,而MainActivity为父Activity,点击
DisplayMessageActivity的左上角返回button的时候。调用逻辑例如以下:
MainActivity.onDestroy()
MainActivity.onCreate(null)
MainActivity.onStart()
解决方式是:为设置MainActivity属性android:launchMode=singleTop
顺便脑补android:parentActivityName的作用,就是为了左上角给子Activity加一个返回button,详细信息例如以下:
Android 4.1提高性能、增强用户体验
App 栈导航:通过设置android:parentActivityName改变回退栈的内容。假设栈中没有parentActivity,则合成栈。通过onPrepareNavigateUpTaskStack()改变parentActivity中的内容。