android调用返回按钮点击事件,在设置了android:parentActivityName后,点击子Activity返回键,父Activity总会调用OnDestroy()的解决方案...

转自: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加一个返回按钮,具体信息如下:
 
 
Android 4.1提高性能、增强用户体验
  App 栈导航:通过设置android:parentActivityName改变回退栈的内容,如果栈中没有parentActivity,则合成栈,通过onPrepareNavigateUpTaskStack()改变parentActivity中的内容。

个人补充:注意安卓中当从一个Activity跳转到子Activity时,在Manifest.xml文件中,在子Activity中设置了android:parentActivityName时,在子Activity的左上角会出现一个返回按钮,此时该返回按钮和系统的返回按钮是不一样的。该返回按钮表示返回上一级目录,而系统的返回按钮为上一个视图,具体可参看:http://www.zhihu.com/question/20568219所以两者的行为会不一样,导致上面所说的,当点击该返回按钮时,会调用父Activity的onCreate方法,而点击系统返回按钮则不会,而是返回父Activity跳转到子Activity前的视图。

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值