我是靠谱客的博主 动听战斗机,最近开发中收集的这篇文章主要介绍Android常用工具类之 Toast工具类编写Toast工具类的必要性解决以上三个问题:,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
编写Toast工具类的必要性
Toast作为Android的一种用户提醒方式被广泛应用在Android应用中,但是Toast的使用却有些问题:
1. 调用代码繁琐:
首先需要调用静态方法makeText(Context context, CharSequence text, @Duration int duration)来创建一个Toast对象。
其次还要记得调用show函数来弹出该toast
2. 多次调用延迟
当多次连续弹出toast时,会导致排在后面的toast会延迟许久才显示,也许用户早已经离开情景界面,用户体验不好
3. 不能非UI线程调用
Toast的弹出值能在UI线程调用,如果后台调用显示,就会触发RuntimeException。导致FC。
解决以上三个问题:
- 通过工具类的静态方法就可以直接显示Toast。
- 如果当前有Toast显示,则让当前toast消失,显示正在调用的toast
- 通过建立一个UI线程的Looper绑定的Handler,讲Toast的显示通过该handler来post运行。
完整代码:
package com.example.pc.myapplication;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.widget.Toast;
public class ToastUtils {
private static Handler sMainThreadHandler;
private static Toast mToast;
public static Handler getMainThreadHandler() {
if (sMainThreadHandler == null) {
synchronized (ToastUtils.class){
if(sMainThreadHandler==null){
sMainThreadHandler = new Handler(Looper.getMainLooper());
}
}
}
return sMainThreadHandler;
}
public static void showToast(final Context context, final String message, final int duration) {
if (mToast != null) {
mToast.cancel();
}
getMainThreadHandler().post(new Runnable() {
@Override
public void run() {
mToast = Toast.makeText(context.getApplicationContext(), message, duration);
mToast.show();
}
});
}
public static void showToastLong(final Context context, final String message) {
showToast(context, message, Toast.LENGTH_LONG);
}
public static void showToastShort(final Context context, final String message) {
showToast(context, message, Toast.LENGTH_SHORT);
}
}
最后
以上就是动听战斗机为你收集整理的Android常用工具类之 Toast工具类编写Toast工具类的必要性解决以上三个问题:的全部内容,希望文章能够帮你解决Android常用工具类之 Toast工具类编写Toast工具类的必要性解决以上三个问题:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复