- 首页 > 睿知 > it技术 > >
ToastUtil|ToastUtil 配合Handler实现子线程直接显示Toast
public class ToastUtils {
static Toast toast = null;
static Handler mainHandler = null;
/**
* 显示Toast信息(子线程也可以调用)
*/
public static void showText(Context context, int resId) {
show(context, null, resId);
}/**
* 显示Toast信息(子线程也可以调用)
*/
public static void showText(Context context, String msg) {
show(context, msg, 0);
}/**
* 通过handler(构造方法用MainLooper),实现子线程也能Toast
*
* @param context
* @param msg
* @param resId
*/
private static void show(final Context context, String msg, int resId) {
if (mainHandler == null) {
synchronized (ToastUtils.class) {
if (mainHandler == null) {
mainHandler = new Handler(context.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.obj != null) {
showString(context, String.valueOf(msg.obj), msg.arg2);
} else {
showInt(context, msg.arg1, msg.arg2);
}
}
};
}
}
}
Message message = mainHandler.obtainMessage(1, resId, Toast.LENGTH_SHORT, msg);
mainHandler.sendMessage(message);
}private static void showInt(Context context, int resId, int time) {
if (toast == null) {
toast = Toast.makeText(context, "", time);
}
toast.setText(resId);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}private static void showString(Context context, String msg, int time) {
if (toast == null) {
toast = Toast.makeText(context, "", time);
}
toast.setText(msg);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}
推荐阅读