【问题标题】:What code must be run in onCreate() before finish() can be called?在调用 finish() 之前必须在 onCreate() 中运行什么代码?
【发布时间】:2014-08-23 11:37:05
【问题描述】:
我想对 Activity 的onCreate() 中的条件进行测试,如果为真,将调用finish()。在调用 finish() 之前是否必须调用任何代码? (并且在调用完成()之后必须运行任何代码吗?)
例如
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // I'm pretty sure this is always required
setContentView(R.layout.activity_main); // is this required?
finish();
}
【问题讨论】:
标签:
android
android-activity
oncreate
activity-finish
【解决方案1】:
你可以在onCreate中随意调用finish()而不需要调用一些额外的方法,例如:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //REQUIRED
if (isVariable) {
finish();
} else {
setContentView(R.layout.activity_main);
//code here
}
}
并且当你调用finish时它不会停止执行方法,所以请确保finish()下面没有任何内容。
而且你不应该调用setContentView,如果你会在onCreate中调用finish来节省内存/速度。
我已经测试过这种方法并且效果很好。