记录Android4.x上不调用onDestroy

670 阅读1分钟

我有两个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一下