本人面试过程中遇到了这个问题,所以自己测试了一遍,整理了一个解决方法,
方法:
A 页面: startActivity(new Intent(this,B.class));
B 页面: Intent intent =newIntent(.this,C.class); startActivityForResult(intent,1001);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==1001){
finish();
}
}
C 页面: setResult(1001); Log.e(TAG, "onClick: 回到A" ); finish();
: A — B----C ,C通过startActivityForResult, 返回标识flag ,来在B页面进行接收,接收到后finish()B页面。
a–b—c–d
当d返回时候,直接finish到c , 但是返回b时候需要设置标识位, 当d点击事件时,设置标识为true, 这样返回到c的时候通过这个标识位true 的,来控制c是否finish,
方法2:
a , b , c , d
将b 设置为singleTask 也可以实现d 回到b ,这样就将c ,d页面销毁
以上方法是可以回到指定页面,但是该页面之上的页面就会销毁;
A–B —C --D
A—C---D—B
C,D 页面不销毁可以添加Flag :
D页面:
Intent intent =new Intent(this,B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
startActivity(intent);
就可以实现B页面指定, C,D不销毁
生命周期: