倒计时的三种解决方法

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

(352)

文章推荐

  • 齐齐哈尔医学院就业怎么样,齐齐哈尔医学院就业怎么样

    网上科普有关“齐齐哈尔医学院就业怎么样,齐齐哈尔医学院就业怎么样”话题很是火热,小编也是针对齐齐哈尔医学院就业怎么样,齐齐哈尔医学院就业怎么样寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。 齐齐哈尔医学院怎么样就业 齐齐哈尔医学院2014届共有本科毕业生

    2025年03月23日
    263
  • 3分钟学会“微乐麻将小程序到底有没有挂的软件”其实确实有挂

    3分钟学会“微乐麻将小程序到底有没有挂的软件网上科普有关“3分钟学会“微乐麻将小程序到底有没有挂的软件”话题很是火热,小编也是针对3分钟学会“微乐麻将小程序到底有没有挂的软件寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,3分钟学会“

    2025年03月26日
    44
  • 玩家实测“微乐家乡游戏官网客服指定大厅v239.3游戏大厅.cc(开挂神器怎么用)

    玩家实测“微乐家乡游戏官网客服指定大厅v239.3游戏大厅.cc网上科普有关“玩家实测“微乐家乡游戏官网客服指定大厅v239.3游戏大厅.cc”话题很是火热,小编也是针对玩家实测“微乐家乡游戏官网客服指定大厅v239.3游戏大厅.cc寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在

    2025年03月27日
    46
  • 玩家实测“雀神广东麻将提高胜率(开挂神器怎么用)

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

    2025年03月28日
    42
  • 3分钟学会“来来麻将开挂软件下载(如何开挂)

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

    2025年04月04日
    58
  • 教程辅助!喜扣跑胡子到底可以开挂吗(透视挂真的假的)

    喜扣跑胡子到底可以开挂吗网上科普有关“喜扣跑胡子到底可以开挂吗”话题很是火热,小编也是针对喜扣跑胡子到底可以开挂吗寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,喜扣跑胡子到底可以开挂吗这款游戏可以开挂的,确实是有挂的,通过微信【】很

    2025年04月09日
    42
  • 实测教程“千月麻将到底怎么开挂(透视挂真的假的)

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

    2025年04月19日
    37
  • 洛阳疫情属于几级(洛阳是不是疫区)

    河南洛阳疫情风险等级截止到2022年12月27日,河南洛阳疫情风险等级为低级。根据河南疫情防控中心官网显示,河南洛阳疫情风险等级为低级,已恢复常态化管理。河南省,简称豫,中华人民共和国省级行政区。低。根据查询洛阳龙门疫情防控部门要求显示:截止2022年10月4日,该地区没有出现新增病例,属于低风险

    2025年05月14日
    36
  • 疫情很严重的英文翻译(疫情太严重英文)

    新冠疫情英语翻译是什么?新冠疫情的英语翻译是COVID-19pandemic。以下是详细的解释:“新冠疫情”指的是在全球范围内爆发的新型冠状病毒引起的疫情。其中,“新冠”是新型冠状病毒的简称,“疫情”则是指疫情的大规模爆发。新冠疫情的英文翻译是COVID-19pandemic。疫情指的是在某

    2025年05月19日
    17
  • 实测辅助”同城游炒地皮挂要多少钱一个(详细透视开挂教程)

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

    2025年05月20日
    7

发表回复

本站作者后才能评论

评论列表(4条)

  • 痴玉
    痴玉 2025年05月21日

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

  • 痴玉
    痴玉 2025年05月21日

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

  • 痴玉
    痴玉 2025年05月21日

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

  • 痴玉
    痴玉 2025年05月21日

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