请考虑以下情况:
课程TemplateActivity
扩展Activity
。在onResume()
内,它执行布尔变量的验证,如果为false,则完成方法和活动,并启动新活动OtherActivity
。
当扩展ChildActivity
的类TemplateActivity
运行时,等待super.onResume()
完成,然后继续,无论其超级是否需要启动Intent
或不。
问题:
当ChildActivity
需要从OtherActivity
开始时,有没有办法终止TemplateActivity
?没有在子类中实现有效性检查。
超类:
class TemplateActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
if(!initialized)
{
startActivity(new Intent(this, OtherActivity.class));
finish();
return;
}
//Do stuff
}
}
子类:
class ChildActivity extends TemplateActivity {
@Override
protected void onResume() {
super.onResume();
//Do stuff
}
}
答案 0 :(得分:5)
更优雅的解决方案是类设计略有不同:
DoStuff()
中引入方法TemplateActivity
(替换为合理的名称)。在那里做所有 //做东西位。 TemplateActivity OnResume
onResume
。这样,如果条件在TemplateActivity OnResume中触发,则不会执行父节点和子节点DoStuff。 ChildActivity
不应该知道关于此行为的任何。
答案 1 :(得分:1)
我想这就是你想要的:
class ChildActivity extends TemplateActivity {
@Override
protected void onResume() {
super.onResume();
if (!isFinishing()) {
// Do stuff
}
}
}