为什么一个acitivity已finish,但还会再执行onCreate方法?

wsyangzuda 2014-09-04 03:15:43
有两个activity,A和B。

两个都是android:launchMode="singleTask" 启动模式

当A Intent 到 B ,并有Bundle。A 没有执行finish(), A还保留着。

B返回A, 执行finish(),相当于关闭了B。

但返回A时候,我点击home,退到桌面。然后再启动APP,就出现问题了。

Android系统竟然去执行B页面的onCreate方法,要知道执行home操作前,是停留到A页面的。

因为跳转到B有Bundle,系统捕获不到数据,便报错了。即使没有Bundle,但我也不希望它还去跳转B一次!



开始,我怀疑android:launchMode="singleTask" 的问题,后来试了4种启动模式,都不行。

请问,各位,这是啥情况? 多谢给个提醒!
...全文
748 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wsyangzuda 2014-09-12
  • 打赏
  • 举报
回复
引用 11 楼 lionfresh 的回复:
[quote=引用 9 楼 wsyangzuda 的回复:] 已经解决!给各位分享。 原来是我在main activity里面,加了android:launchMode="singleTask", 导致出现本文我上面描述的现象。 我把这句代码去掉,一切正常。原来是上面界面,按home键,再回来,还是保持原来的界面。 具体原因,等待我好好研究。。。
开始,我怀疑android:launchMode="singleTask" 的问题,后来试了4种启动模式,都不行。你不是说都不行么....[/quote] 你好,是在启动的第一activity的,之前说的不是第一个activity哦 周末愉快!
lionfresh 2014-09-12
  • 打赏
  • 举报
回复
引用 9 楼 wsyangzuda 的回复:
已经解决!给各位分享。 原来是我在main activity里面,加了android:launchMode="singleTask", 导致出现本文我上面描述的现象。 我把这句代码去掉,一切正常。原来是上面界面,按home键,再回来,还是保持原来的界面。 具体原因,等待我好好研究。。。
开始,我怀疑android:launchMode="singleTask" 的问题,后来试了4种启动模式,都不行。你不是说都不行么....
wsyangzuda 2014-09-12
  • 打赏
  • 举报
回复
引用 8 楼 jiaqiangm 的回复:
按照楼主所说的话,是肯定不会启动B的,肯定是你哪里弄错了。也别去怀疑系统bug之类的。多找找自己的原因吧
Much appreciated, you are right!
wsyangzuda 2014-09-12
  • 打赏
  • 举报
回复
已经解决!给各位分享。 原来是我在main activity里面,加了android:launchMode="singleTask", 导致出现本文我上面描述的现象。 我把这句代码去掉,一切正常。原来是上面界面,按home键,再回来,还是保持原来的界面。 具体原因,等待我好好研究。。。
黄小楼 2014-09-05
  • 打赏
  • 举报
回复
按照楼主所说的话,是肯定不会启动B的,肯定是你哪里弄错了。也别去怀疑系统bug之类的。多找找自己的原因吧
Darcy杨 2014-09-05
  • 打赏
  • 举报
回复
我遇到过一次类似的问题,原因是A和B的screen orientation不一样,导致系统在切换Activity的时候总是会多创建一次
哎,真难 2014-09-05
  • 打赏
  • 举报
回复
按理说不会吧,哪怕设置了把B作为了MAIN,也不会去执行的啊
卡卡的喵 2014-09-05
  • 打赏
  • 举报
回复
会不会是你的AndroidManifest.xml配置错了,把B作为了MAIN?
licai1210 2014-09-04
  • 打赏
  • 举报
回复
B页面是启动页面吗?
wsyangzuda 2014-09-04
  • 打赏
  • 举报
回复
引用 1 楼 lionfresh 的回复:
代码发来看看
你好,非常感谢你的回答, 这是A的代码 Intent i=new Intent(); i.setClass(HistoryActivity.this, HistoryInfosActivity.class); Bundle b = new Bundle(); b.putString("code", jobNo_item); b.putString("type", "JobDetail"); b.putString("point", point); i.putExtras(b); startActivity(i); 这是B的代码 back_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); 只是主要的代码,有省略。
lionfresh 2014-09-04
  • 打赏
  • 举报
回复
代码发来看看

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧