如果启动了新活动,则为活动控制流

时间:2016-11-25 11:49:00

标签: android android-activity

假设有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或同时致电。

2 个答案:

答案 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() 并且会跳过ondestroyonpause

onStop