如何彻底杀死activity?全部清除

How to completely kill the activity? clear all

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    MyTimer();
}

//Таймер заставки в 3 секунды.
private void MyTimer() {
    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        int t = 3;

        @Override
        public void run() {
            if (t == 0) {
                timer.cancel();
                startActivity(new Intent(getApplicationContext(), Authors.class));
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        ((ImageView)findViewById(R.id.imageViewMain)).setImageDrawable(null);
                        ((ImageView)findViewById(R.id.imageViewMain)).destroyDrawingCache();
                    }
                });
            }
            t--;
        }
    }, 0, 1000);
}

@Override
protected void onPause() {
    super.onPause();
    finish();
}

书中,完成后并没有从图片中释放内存。

图片较大,需要清理一下

查看"memory monitor"中的IDEA Intelljj。

尺寸不同:

  1. 运行,内存大小 21mb
  2. 运行,内存大小 28mb
  3. 运行,内存大小 28mb
  4. 运行,内存大小 21mb
  5. 运行,内存大小 21mb

运行一个activity

为什么会这样? 以及如何彻底杀死activity?

发生这种情况是因为您正在泄漏 Activity。匿名内部 Runnable 将持有您的 Activity 的强引用,直到所有 Timers 都被处理。反过来,MessageQueue(Android class)将持有您的 Runnable 的引用,直到它被处理。

查看此 post 了解更多信息。