我有两个Activity,MainActivity代码如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.test).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
});
Log.i("TAG", "onCreate: " + this);
}
@Override
protected void onStop() {
super.onStop();
finish();
Log.i("TAG", "onStop: " + this);
}
@Override
protected void onDestroy() {
Log.i("TAG", "onDestroy: " + this);
super.onDestroy();
}
}
SecondActivity代码如下:
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.test).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(SecondActivity.this, MainActivity.class));
finish();
}
});
Log.i("TAG", "onCreate: " + this);
}
@Override
protected void onDestroy() {
Log.i("TAG", "onDestroy: " + this);
super.onDestroy();
}
}
运行后有如下日志:
01-22 14:41:27.656 14074-14074/com.myapplication I/TAG: onCreate: com.myapplication.MainActivity@42799e40
01-22 14:42:03.167 14074-14074/com.myapplication I/TAG: onCreate: com.myapplication.SecondActivity@42853140
01-22 14:42:03.553 14074-14074/com.myapplication I/TAG: onStop: com.myapplication.MainActivity@42799e40
01-22 14:42:12.194 14074-14074/com.myapplication I/TAG: onCreate: com.myapplication.MainActivity@4286da80
01-22 14:42:12.274 14074-14074/com.myapplication I/TAG: onDestroy: com.myapplication.MainActivity@42799e40
01-22 14:42:12.587 14074-14074/com.myapplication I/TAG: onDestroy: com.myapplication.SecondActivity@42853140
很明显,在启动SecondActivity之后,MainActivity的onDestroy未执行,这个应该是4.x系统的Bug,规避办法就是,不要在onStop中调用finish(), mark一下