- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Activity A的oncreate中
while(i<5){
startActivity(new Intent(this, ActivityB.class));
Log.v(tag,"activity A");
}
在 oncreate 中的 Activity B 中
Log.v(tag,"activity B");
finish();
然后在控制台中我看到了这样的东西
activity A
activity A
activity A
activity A
activity A
activity B
activity B
activity B
activity B
activity B
我应该改变什么才能输出这样的情况
activity A
activity B
activity A
activity B
activity A
activity B
我的意思是对于每个 startActivity 方法,我都希望新 Activity 真正开始。因为 Activity B 实际上只存在一小部分开始和结束的时间。我的问题在于理解 Activity 生命周期。我预计当我调用 srartActivity 时, Activity 确实会开始,但它并没有发生。
编辑1:好的,我只粘贴了一小段代码。问题不在 while 循环中,在我的真实项目中,正确编写了 i 变量的初始化,如 int i-0;并像 i++ 一样在循环内递增; . . .如您所见,应用程序的输出很好,所有内容都被调用了一定次数等等,但问题在于调用顺序。就好像在srartActivity调用之后startActivity并没有启动activity,而是在activityA的oncreate完成之后才开始一切。
最佳答案
这不仅与 Activity 生命周期有关,还与应用主线程(=UI 线程)中的消息处理有关。startActivity 在发送 Intent 后立即返回,因此 while 循环会在很短的时间内触发 5 个 Intent 来启动 Activity B,然后将控制权返回给线程的消息循环。只有从当前方法调用返回后,您的应用程序主线程才能开始处理先前生成的消息,这将导致创建 Acitvity 5 的 5 个实例,一个接一个。
如果您希望 Activity A 推迟到 Activity B 完成,您可以调用 startActivityForResult - 一次!。然后,在 Activity B 中,调用 finish(int) 将结果返回给 Activity A。覆盖 onActivityResult在 Activity A 中获取结果代码,如果需要,您可以从这里再次启动 Acitity B。
关于android - startNewActivity 多次生命周期错过理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7766700/
在 Activity A的oncreate中 while(i<5){ startActivity(new Intent(this, ActivityB.class)); Log.v(tag,"acti
我是一名优秀的程序员,十分优秀!