如何彻底杀死活动?清除所有

时间:2015-02-27 20:16:00

标签: android android-layout android-activity

 @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();
}
在书中,完成并没有从图片中释放记忆。

图片很大,有必要清理它。

通过“内存监视器”中的IDEA Intelljj进行检查。

尺寸不同:

  1. 运行,内存大小为21mb
  2. 运行,内存大小为28mb
  3. 运行,内存大小为28mb
  4. 运行,内存大小为21mb
  5. 运行,内存大小为21mb
  6. 运行一项活动

    为什么会这样? 以及如何完全杀死活动?

1 个答案:

答案 0 :(得分:2)

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

有关详细信息,请查看此post