如何在子线程中使用Toast和更新UI
因为没一个Looper处理消息循环,所以子线程中无法使用Toast
方法:
Looper.prepare(); Toast.makeText(getActivity(),"刷到底啦",Toast.LENGTH_SHORT).show(); Looper.loop();
在子线程中更新UI
第一种:
new Handler(context.getMainLooper()).post(new Runnable() { @Override public void run() { // 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui } });
第二种:
// 如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程 // 因为runOnUiThread是Activity中的方法,Context是它的父类,所以要转换成Activity对象才能使用 ((Activity) context).runOnUiThread(new Runnable() { @Override public void run() { // 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui } });
第三种就是handler机制了
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步