ToastUtils
import android.content.Context; import android.os.Handler; import android.os.Looper; import android.widget.Toast; public class ToastUtils { //sHandler维护的是主线程的消息队列 private static Handler sHandler = new Handler(Looper.getMainLooper()); //无论如何,Toast都是在主线程中被调用的 public static void showToast(final Context context,final String msg) { //判断是否是主线程 if(Looper.myLooper() == Looper.getMainLooper()) { Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } else { //handler.sendMessage(msg) 把一个消息发送到了消息队列,这个消息队列属于主线程的呢还是子线程的呢,取决于handler维护的是哪一个线程的消息队列 // 将runnable丢到主线程的消息队列 sHandler.post(new Runnable() { @Override public void run() { Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } }); } /*new Thread(new Runnable() { @Override public void run() { Looper.prepare(); //handler维护的是子线程的消息队列 Handler handler = new Handler(); Looper.loop(); } }).start();*/ } }
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!