博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Toast和Handler的间隔使用
阅读量:4172 次
发布时间:2019-05-26

本文共 1631 字,大约阅读时间需要 5 分钟。

本人在项目开发过程,需要实现一个“来电归属地”的功能,因此用到了Toast。但Toast的显示时间,不受我们控制,系统只提供了两个配置参数,分别是LENGTH_LONG,LENGTH_SHORT。因为要让Toast长期显示,需要另外一个线程,每隔一个时间段,就循环显示一次。
先说明一下,本次需要用到Handle机制,因此不了解或者不熟悉Handle的同学,请先去看看Android上的Handle机制!
下面开始讲解代码实现详情!
先写一个包装类,就叫MyToast吧,如下
public class MyToast {
private Context mContext = null;
private Toast mToast = null;
private Handler mHandler = null;
private Runnable mToastThread = new Runnable() {
@Override
public void run() {
mToast.show();
mHandler.postDelayed(mToastThread, 3000);//每隔3秒显示一次,经测试,这个时间间隔效果是最好
}
};
public MyToast(Context context){
mContext = context;
mHandler = new Handler(mContext.getMainLooper());
mToast = Toast.makeText(mContext, "自由@飞翔", Toast.LENGTH_LONG);
}
public void setText(String text){
mToast.setText(text);
}
public void show(){
mHandler.post(mToastThread);
}
public void cancel() {
mHandler.removeCallbacks(mToastThread);//先把显示线程删除
mToast.cancel();// 把最后一个线程的显示效果cancel掉,就一了百了了
}
}
MainActivity 的代码如下:
public class MainActivity extends Activity implements OnClickListener{
private Button show_button;
private Button cancel_button;
private MyToast myToast;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
show_button = (Button) findViewById(R.id.show_button);
cancel_button = (Button) findViewById(R.id.cancel_button);
show_button.setOnClickListener(this);
cancel_button.setOnClickListener(this);
myToast = new MyToast(this);
}
@Override
public void onClick(View v) {
if(v == show_button){
myToast.show();
}else if (v == cancel_button) {
myToast.cancel();
}
}
}

转载地址:http://sebai.baihongyu.com/

你可能感兴趣的文章
百度现场面试:JVM+算法+Redis+数据库!(三面)
查看>>
java架构之路(多线程)JMM和volatile关键字
查看>>
创业感悟:技术兄弟为什么一直没有起来
查看>>
打破技术的认知边界
查看>>
IntelliJ IDEA导入Zookeeper源码
查看>>
Dubbo源码分析系列之服务的发布
查看>>
Java集合容器面试题(2020最新版)
查看>>
我用分布式事务干掉了一摞简历
查看>>
微服务架构-从理想到现实
查看>>
高可用RabbitMQ集群的搭建及原理分析
查看>>
JAVA 基于Redis的分布式锁
查看>>
应对程序员面试,你必须知道的八大数据结构
查看>>
Redis和多路复用模型
查看>>
SQL 性能起飞了!
查看>>
ElasticSearch 面试 4 连问,你顶得住么?
查看>>
架构师成功沟通的三个关键
查看>>
共享锁、排他锁、互斥锁、悲观锁、乐观锁、行锁、表锁、页面锁、不可重复读、丢失修改、读脏数据...
查看>>
我是如何用 redis 做实时订阅推送的
查看>>
Mysql索性为什么要用B+Tree当索引
查看>>
以淘宝网为例,解析大型Java项目架构演进
查看>>