2016-11-25 68 views
0

因此,假设一个活动的控制流有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或两者。

回答

1

是的,你是绝对正确的。但不是你的onCreate的一些但所有代码都会被调用。

下面将是你的这两个活动的流动

当你永远从ActivityA导航到ActivityB随后的onPause()被称为随后ActivityA的的onStop()ActivityA方法,然后该方法的onCreate()的ActivityB被调用,随后是ActivityB的onStart(),然后是ActivityB的onResume()。

另外通过按下ActivityB的返回键

的onPause()导航回到ActivityA时被称为后跟ActivityB的的onStop(),然后该方法第一活性ActivityA的onRestart()被调用,接着ActivityA的onStart(),然后是ActivityA的onResume()。

但是,因为您在onResume调用之前从ActivityA导航,所以onPause不会被调用ActivityB。

1

下面的答案是有没有办法执行 startActivity()onCreate()后的代码?就像调用完成()或返回或 两者。

如果你打电话finish()一旦创建活动ondestroy将立即叫 和onpauseonStop等将被跳过

boolean isRooted; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

isRooted=AndroidUtils.isDeviceRooted(); 

if (isRooted) { 
    Intent i = new Intent(this, ActivityB.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    startActivity(i); 
    finish(); 
}else{ 
    .... 
    // other code of onCreate() 
} 

} 
相关问题