Android自带的Toast存在很多问题,例如十条相同的消息同时显示的时候,Toast会每一条都进行显示,大概会持续20s的时间,这部分时间对用户来说是不必要的,因此需要对系统的Toast进行优化,设计一种单例Toast,两条消息来临之间维护一个时间段duration,如果这个时间段>2s,那么正常显示,否则,判断两条消息是否相同,如果相同,则只显示第一条,不相同的话,立即更新Toast。
public class MyToast {
private static String oldMsg;
protected static Toast toast = null;
private static long oneTime=0;
private static long twoTime=0;
public static void showToast(Context context, String s){
if(toast==null){
toast =Toast.makeText(context, s, Toast.LENGTH_SHORT);
toast.show();
oneTime=System.currentTimeMillis();
}else{
twoTime=System.currentTimeMillis();
if(s.equals(oldMsg)){
if(twoTime-oneTime>Toast.LENGTH_SHORT){
toast.show();
}
}else{
oldMsg = s;
toast.setText(s);
toast.show();
}
}
oneTime=twoTime;
}
}