package anlaiye.com.cn.artdemo.lifecycle; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import anlaiye.com.cn.artdemo.R; public class DActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_d); Log.e(TAG, "onCreate() called with: savedInstanceState = [" + savedInstanceState + "]"); findViewById(R.id.jump).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //A-B-C-D,依次启动,从D利用clearTop 回到A,会先执行 B C 的onDestroy(),然后D的onPause() ->A 会先销毁自己,onDestroy()->onCreate()-onStart().... 所以不会出现闪屏。但是A会销毁自己一次,参数需要从onCreate()里,getIntent getExtras()拿到 //如果A是singleTop 则不会销毁 跳过onDestroy-onCreate,回回调onNewIntent,参数Intent里 能接受到。 Intent intent = new Intent(DActivity.this, AActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("key_test", "exist?"); startActivity(intent); } }); } private static final String TAG = "zxt/DActivity"; @Override protected void onStart() { super.onStart(); Log.e(TAG, "onStart() called"); } @Override protected void onStop() { super.onStop(); Log.e(TAG, "onStop() called"); } @Override protected void onDestroy() { super.onDestroy(); Log.e(TAG, "onDestroy() called"); } @Override protected void onResume() { super.onResume(); Log.e(TAG, "onResume() called"); } @Override protected void onPause() { super.onPause(); Log.e(TAG, "onPause() called"); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.e(TAG, "onActivityResult() called with: requestCode = [" + requestCode + "], resultCode = [" + resultCode + "], data = [" + data + "]"); } }