前言
提示:在许多app中首页都会出现倒计时广告页面,是许多项目中都会用到的。
提示:以下是本篇文章正文内容,下面案例可供参考
一、倒计时为什么会出现内存泄露?
由于倒计时会在异步线程中执行,如果主UI页面销毁,并不影响到子线程的运行,从而造成内存泄露。
二、使用步骤
1.简单倒计时执行
代码如下(示例):
private void initdata() { //停顿一秒继续 timer.schedule(timerTask,1000,1000); } private void initView() { ykaoMainVideo = (VideoView) findViewById(R.id.ykao_main_video); ykaoMainText = (TextView) findViewById(R.id.ykao_main_text); ykaoMainVideo.setVideoPath("背景视频地址"); ykaoMainVideo.start(); timerTask =new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { take--; ykaoMainText.setText(take+""); if(take<=0){ timer.cancel(); ykaoMainText.setText("跳过"); ykaoMainText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "点击跳过页面", Toast.LENGTH_SHORT).show(); Intent intent =new Intent(MainActivity.this, LoginActivity.class); startActivity(intent); } }); } } }); } }; }
2.内存泄露处理
代码如下(示例):
@Override protected void onDestroy() { super.onDestroy(); Log.i("---sss","页面开始销毁"); if(timer != null){ timer.purge(); timer.cancel(); }else{ timer.cancel(); timerTask.cancel(); } }
总结
总的来说就是此UI页面销毁时,将异步线程同时销毁防止内存泄露