Java 如何终止一个活动并切换到另一个活动?

Java 如何终止一个活动并切换到另一个活动?,java,android,Java,Android,我在做这样的事情: public class MyActivity extends Activity { @Override public void onStart() { super.onStart(); User user = new Entrance().enter(); // continue with user, since it's a valid one } } // I'm using this class from many activiti

我在做这样的事情:

public class MyActivity extends Activity {
  @Override
  public void onStart() {
    super.onStart();
    User user = new Entrance().enter();
    // continue with user, since it's a valid one
  }
}
// I'm using this class from many activities
public class Entrance {
  public User enter() {
    try {
      User user = new Hub().enter();
    } catch (AuthenticationFailedException ex) {
      this.startActivity(new Intent(this, LoginActivity.class));
      this.finish();
    }
    return user;
  } 
}
此代码不起作用,因为
finish()
不会引发异常并让执行流继续。此场景的正确设计是什么?

您可以使用此方法分离逻辑流

public void onStart() {
    super.onStart();
    User user = new Entrance().enter();
    // continue with user, since it's a valid one
    if (isFinishing()) {
        ...
    } else {
        ...
    }
}

由于您使用的是来自多个活动的入口类,因此应该将活动的上下文传递给入口类中的enter()方法。其内容应如下:

public User enter(Context context) {
  try {
    User user = new Hub().enter();
  } catch (AuthenticationFailedException ex) {
    context.startActivity(new Intent(context, LoginActivity.class));
    context.finish();
  }
  return user;
} 

尝试此操作,首先创建意图,然后完成活动通过意图启动下一个/所需的活动

Intent loginIntent=new Intent(MyActivity.this, LoginActivity.class);
MyActivity.this.finish();
startActivity(loginIntent);

请在manifest.return null中为MyActivity尝试“noHistory”,或引发异常。