简单倒计时判断和内存泄露处理

文章目录


前言

提示:在许多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页面销毁时,将异步线程同时销毁防止内存泄露

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值