0

Eclipse MAT 直方图显示 SplashActivity 实例即使在启动 MemTweaksActivity 之后仍然存在。有人对此有任何想法吗?

公共类 SplashActivity 扩展 Activity{

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

    new Timer().schedule(new TimerTask() {

                @Override
                public void run() {
                    Intent i = new Intent(getApplicationContext(), MemTweaksActivity.class);
                    startActivity(i);
                    finish();

                }
            },2000);

}

}

但是下面的代码没有任何计时器成功地删除了 SplashActivity 实例。MAT 显示 0 个 SplashActivity 实例。

Intent i = new Intent(getApplicationContext(), MemTweaksActivity.class);       startActivity(i); finish();
4

1 回答 1

0

为生命周期调用和 SplashActivity 添加onPause()日志onStop()记录onDestroy()。您将看到这些在 MemTweaksActivity 运行之前/之后的某个时间点被调用。垃圾收集器会在需要时从内存中删除 SpashScreen 活动。你不能强迫这种情况发生。

编辑:

SplashScreenActivity 仍然存在的原因是因为您没有清理 Timer。

做这个:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {        
        @Override
        public void run() {
            Intent i = new Intent(getApplicationContext(), MemTweaksActivity.class);
            startActivity(i);
            finish();
            // Release timer resources
            timer.cancel();         
        }
    },2000);
}
于 2012-08-03T11:13:11.067 回答