假设有ActivityA:
@Override
protected void onCreate(Bundle savedInstanceState) {
if (AndroidUtils.isDeviceRooted()) {
Intent i = new Intent(this, ActivityB.class);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
}
....
// other code of onCreate()
}
我知道startActivity()
是异步的,并且当新活动开始后当前活动结束。如果是这种情况,那么onCreate()"的其他代码的某些部分。将被执行,对吗?
编辑:根据答案,有没有办法在startActivity()
onCreate()
之后执行代码?比如致电finish()
或return
或同时致电。
答案 0 :(得分:1)
是的,你是绝对正确的。但不是一些,而是你的onCreate的所有代码都会被调用。
以下将是您的两个活动的流程
当您从ActivityA导航到ActivityB时,调用ActivityA方法的onPause(),然后调用ActivityA的onStop(),然后调用ActivityB的onCreate()方法,然后调用ActivityB的onStart(),然后调用onResume( )ActivityB。
也可以通过按返回键
导航回ActivityA调用ActivityB的onPause(),然后调用ActivityB的onStop(),然后调用第一个activity的ActivityA的onRestart()方法,然后调用ActivityA的onStart(),然后调用ActivityA的onResume()。
但是,当您在onResume上调用之前从ActivityA导航,因此不会为ActivityB调用onPause。
答案 1 :(得分:1)
在答案之后有一种方法可以在之后执行代码 onCreate()中的startActivity()?比如调用finish()或return或 都。
如果您在创建活动后致电<% @contractors.each do |contractor|%>
<p><%=contractor.name</p>
<%end%>
,则会立即调用finish()
并且会跳过ondestroy
和onpause
等
onStop