mainActivity在androidmanifest.xml中有一个属性android:launchMode="singleInstance"
。
以下是mainActivity中的onCreate
方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate() from MainActivity");
session = new TempSession(this);
// check if logged in. If not, take the user back to login activity.
session.checkLogin(); // <---- HERE
Toast.makeText(this, "logged in as " + session.getUsername(), Toast.LENGTH_SHORT).show();
// Prevents screen from turning off when in this Activity.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
....
而tempsession,它检查用户是否登录,如果没有,它将把用户带到loginactivity。
这是
checkLogin()
方法public void checkLogin(){
// Check login status
if(!this.isLoggedIn() || getUsername() == null) {
// user is not logged in redirect him to Login Activity
Intent i = new Intent(context, LoginActivity.class);
// Closing all the Activities
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
// Add new Flag to start new Activity
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
// Staring Login Activity
context.startActivity(i);
}
}
据我所知,当mainActivity调用checkLogin()时,我在这里标记了目前,我的应用程序会打开loginActivity,但仍会继续执行下一条指令(例如,让Toast说“登录为空”,并在后台继续执行),并调用onPause()->onStop()。
有没有办法阻止主要活动继续进行?
这种情况会导致从loginactivity返回到mainactivity。
如果你需要更多的信息请告诉我。
提前谢谢你。
最佳答案
有什么方法可以阻止MainActivity
继续在那一点上运行吗?
对。havecheckLogin()
返回一些值,指示MainActivity#onCreate(...)
应该return
而不是继续。
调用startActivity(...)
不会启动活动。把它想象成要求android框架启动一个活动。它将此作业放在ui线程工作队列的末尾。这意味着在启动新活动之前,它将完成已在工作队列中的任何其他作业,包括当前方法的其余部分,以及当前活动的其他生命周期方法。
关于java - Activity 中的onCreate会忽略所有调用堆栈序列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32534090/