Android完成活动,并开始另一个

我很好奇一件事。 我怎样才能完成我目前的活动,并开始另一个。

例如:

MainActivity --(starts)--> LoginActivity--(if success starts)-->SyncActivity--(if success start)-->MainActivity (with updated data). 

所以我希望SyncActivity在成功同步之后启动MainActivity ,并且如果按下button不要返回到SyncActivity或在SynActivity之前打开的任何其他活动。

我试过这个代码:

 Intent intent = new Intent(Synchronization.this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(intent); this.finish(); 

但它不能正常工作。 任何想法如何让事情正常工作?

使用

 Intent intent = new Intent(SyncActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); 

从你的OP来看,我不确定你是否绝对必须初始化mainActivity两次。

Android的devise使应用程序永远不会被用户真正closures。 专注于覆盖android生命周期方法,如OnResume和OnPause以保存UI数据等

因此,你不需要明确地finish()主要活动(实际上不应该)。 要接收以前活动的login或同步数据,只需重写OnActivityResult()方法。 但是,要做到这一点,你必须使用startActivityForResult(intent)来启动这个活动。 所以对于每个活动你应该这样做:

主要活动:

 static public int LOGIN_RETURN_CODE = 1; 

开始login:

 Intent intent = new Intent(MainActivity.this, LogInActivity.class); startActivityForResult(intent, LOGIN_RETURN_CODE); 

接收login信息:

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case LOGIN_RETURN_CODE: //do something with bundle attached } } 

login活动:

 static public int SYNC_RETURN_CODE = 2; 

开始同步:

 Intent intent = new Intent(LogInActivity.this, SyncActivity.class); startActivityForResult(intent,SYNC_RETURN_CODE); 

接收信息并返回到Main:

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case MainActivity.SYNC_RETURN_CODE: Intent intent = new Intent(...); intent.setResult(RESULT_OK); finish(); } } 

这可能不是所有的编译,但希望你明白了。