@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进行检查。
尺寸不同:
运行一项活动
为什么会这样? 以及如何完全杀死活动?
答案 0 :(得分:2)
这种情况正在发生,因为您正在泄漏Activity
。匿名内部Runnable
将保留Activity
的强引用,直到处理完所有Timers
为止。反过来,MessageQueue
(Android类)将保留Runnable
的引用,直到它被处理。
有关详细信息,请查看此post。