倒计时的三种解决方法

网上科普有关“倒计时的三种解决方法”话题很是火热,小编也是针对倒计时的三种解决方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1、方...

网上科普有关“倒计时的三种解决方法”话题很是火热,小编也是针对倒计时的三种解决方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

1、方法一:

? 利用CountDownTimer类

? //这个方法中的两个参数第一个是 倒计时的时长,第二个是每次减少的时间

CountDownTimer timer = new CountDownTimer(5000,1000) {

@Override

public void onTick(long millisUntilFinished) {

//donghua_textview展示数据的控件

donghua_textview.setText(millisUntilFinished/1000+"S");

}

//动画结束时调用的方法

@Override

public void onFinish() {

startActivity(new Intent(DonghuaActivity.this, LoginActivity.class));

}

};

//最后不要忘记调用start();方法

timer.start();

2、方法二:

//利用Timer类

int mSeconds = 5;

Timer timer = new Timer();

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

if (msg.what == 1) {

if (mSeconds == 0) {

timer.cancel();

startActivity(new Intent(DonghuaActivity.this, LoginActivity.class));

} else if (mSeconds > 0) {

donghua_textview.setText(mSeconds + "S");

}

}

}

};

TimerTask task = new TimerTask() {

@Override

public void run() {

mSeconds--;

handler.sendEmptyMessage(1);

}

};

//调用timer类中的schedule方法

timer.schedule(task, 1000, 1000);

3、方法三:

利用handler发送延迟线程

? int mSeconds = 5;

? Handler handler =? new Handler();

private void changeSeconds() {

mSeconds--;

handler.postDelayed(new Runnable() {

@Override

public void run() {

main_textview.setText(mSeconds+"S");

if(mSeconds==0){

//在这里我们开启动画不做跳转

initDonghua();

}else{

changeSeconds();

}

}

},1000);

}

//初始化动画

? private void initDonghua() {

Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim);

animation.setAnimationListener(this);

main_textview.startAnimation(animation);

}

private void initView() {

main_textview = (TextView) findViewById(R.id.main_textview);

}

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationEnd(Animation animation) {

//在动画结束的时候进行跳转

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

startActivity(intent);

}

@Override

public void onAnimationRepeat(Animation animation) {

}

Dialog关不掉

countdown

英 ['ka?ntda?n]?

美 [?ka?nt?da?n]

n.倒数读秒,倒计时; 大事临近的时期; 准备过程,准备工作

1. the countdown to the wedding

婚礼的临近

2. If the countdown timer ever hits zero, do your validation processing.

处理这种情况的方法是在输入的同时使用递减计时器,每次击键重新计时。如果递减计时器变为零,就开始验证。

3. This is the final countdown for Newcastle Utd.

这是纽卡斯尔联队的最后倒计时了。

4. The director began the countdown ten seconds before the broadcast.

距离开播还有十秒,导播开始倒读数。

场景描述:我在A活动里,onCreate初始化了一个DIalog和一个CountDownTimer类型的计数器,并在计时器的构造中,传入当前的handler对象。计时器被我写成单例的。

然后当我点击A按钮的时候,启动Dialog和计时器,计时器倒计时5秒,发出消息,在handleMessage中,收到发送的消息,然后关闭Dialog。

第一次进入活动,点击A按钮,过5秒,收到消息然后关闭dialog,这个操作是正常的。但是当我退出当前活动

第二次进入活动,点击A按钮,过5秒,收到消息后,就关闭不掉这个dialog了。整个活动都是重新初始化的。

分析:经过一番测试之后,我发现dialog中的mShowing这个属性,在我第二次进入活动,并且dialog.show()调用之后,被修改为true。过五秒后,在handleMessage中,调用dialog.hide(),这时dialog的mShowing这个属性确是false,然后就关不掉dialog了。

如何解决:最后我是如何解决的呢,我把CountDownTimer这个计时器创建的单例给取消了,每次都重新创建一个新的对象并接收当前活动的handler对象。

后续:

情况1:CountDownTimer是单例模式,并持有当前活动的handler对象

messageDialog1? hashcode:29560034是我第一次进入活动创建的dialog对象,然后我退出当前活动。

第二次进入活动,创建了一个新的dialog对象messageDialog1?hashcode:96367861

但是,当五秒过后,在handleMessage中,收到消息关闭dialog时,这个dialog对象反而是第一次创建的dialog对象

看hashcode

所以关闭不了dialog,因为根本就不是同一个对象。原因会继续找。

TIPS:这里做一个小结,建议不要在单例类中,持有hanlder对象,否则就会发生这种操蛋的问题。

关于“倒计时的三种解决方法”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[痴玉]投稿,不代表创健号立场,如若转载,请注明出处:https://chuangjian-nb.com/cshi/202504-2132.html

(308)

文章推荐

  • 公开招投标的流程是什么

    网上科普有关“公开招投标的流程是什么”话题很是火热,小编也是针对公开招投标的流程是什么寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。法律分析:1、招标人可以委托招标代理机构进行招标;2、招标公司在招标人配合下,根据招标策划编制招标文件;3、招标人确认后,招标

    2025年03月02日
    291
  • 火影忍者所有忍术

    网上科普有关“火影忍者所有忍术”话题很是火热,小编也是针对火影忍者所有忍术寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1、真·神罗天征。神罗天征是一种轮回眼的血继限界所赋予的特殊忍术之一,可以以自己为中心将周围的一切物体全部弹开。这个术基本上可以免疫所有的

    2025年03月12日
    338
  • 实测教程“66红中麻将有规律吗(韩语翻译器)

    网上科普有关“66红中麻将有规律吗”话题很是火热,小编也是针对66红中麻将有规律吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,66红中麻将有规律吗这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会发现很多用户的

    2025年03月04日
    45
  • 必看教程“微乐辅助器ios收费版”原来真实可以装挂

    必看教程“微乐辅助器ios收费版网上科普有关“必看教程“微乐辅助器ios收费版”话题很是火热,小编也是针对必看教程“微乐辅助器ios收费版寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,必看教程“微乐辅助器ios收费版这款游戏可以开挂

    2025年03月15日
    11
  • 温州特色名吃十大排名

    网上科普有关“温州特色名吃十大排名”话题很是火热,小编也是针对温州特色名吃十大排名寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。温州特色名吃十大排名有(以下排名不分先后):1.糯米饭早上必吃的一个早餐就是糯米饭,店家会问你要多少钱的糯米饭,然后帮你盛好之后,

    2025年03月17日
    338
  • 全国3012所高校全名单_1

    网上科普有关“全国3012所高校全名单”话题很是火热,小编也是针对全国3012所高校全名单寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。由于字数限制只能,以下为全国3012所高校中,全国普通高等学校中的本科院校北京大学中国人民大学清华大学北京交通大学北京工业

    2025年03月28日
    196
  • 3分钟学会“微乐麻将道具有用吗(透视挂真的假的)

    3分钟学会“微乐麻将道具有用吗网上科普有关“3分钟学会“微乐麻将道具有用吗”话题很是火热,小编也是针对3分钟学会“微乐麻将道具有用吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,3分钟学会“微乐麻将道具有用吗这款游戏可以开挂的,确实

    2025年03月26日
    6
  • 玩家实测“微乐辅助神器开挂资源包怎么用(详细透视开挂教程)

    玩家实测“微乐辅助神器开挂资源包怎么用网上科普有关“玩家实测“微乐辅助神器开挂资源包怎么用”话题很是火热,小编也是针对玩家实测“微乐辅助神器开挂资源包怎么用寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,玩家实测“微乐辅助神器开挂资源

    2025年03月27日
    7
  • 玩家实测“手机麻将装挂视频(详细真的有挂)

    玩家实测“手机麻将装挂视频网上科普有关“玩家实测“手机麻将装挂视频”话题很是火热,小编也是针对玩家实测“手机麻将装挂视频寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,玩家实测“手机麻将装挂视频这款游戏可以开挂的,确实是有挂的,通过微

    2025年03月27日
    8
  • 3分钟学会“微乐必赢来好牌几率(详细透视开挂教程)

    网上科普有关“微乐必赢来好牌几率”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,微乐必赢来好牌几率这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会发现很多

    2025年04月03日
    6

发表回复

本站作者后才能评论

评论列表(4条)

  • 痴玉
    痴玉 2025年04月06日

    我是创健号的签约作者“痴玉”!

  • 痴玉
    痴玉 2025年04月06日

    希望本篇文章《倒计时的三种解决方法》能对你有所帮助!

  • 痴玉
    痴玉 2025年04月06日

    本站[创健号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • 痴玉
    痴玉 2025年04月06日

    本文概览:网上科普有关“倒计时的三种解决方法”话题很是火热,小编也是针对倒计时的三种解决方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1、方...