安卓在子线程中使用使用Toast
16lz
2021-01-26
今天,在Android子线程想使用Toast进行提示,于是直接在子线程使用
而后,在Login.java代码中使用:
在需要使用Toast的线程使用:
使用示例如:
Toast.makeText(getApplicationContext(),"www.lovemu.com.cn",Toast.LENGTH_SHORT);
但是这样会出错,程序会崩溃,
寻找了很多资料,总是不尽如人意。
综合了许多方法,最终得以实现。
新建一个自定义Handler类,【以避免出现ThisHandlerclassshouldbestaticorleaksmightoccur 警告】
public class MsgHandler extends Handler {private Activity activity;public MsgHandler(Activity activity){this.activity=new WeakReferenc<Activity>(activity).get();//使用弱引用WeakReferenc,以避免Handler内存泄露}@Overridepublic void handleMessage(Message msg) {switch (msg.arg1) {case 1:showInfo("登录成功!");break;case 2:showInfo("用户名称或者密码错误,请重新输入!");break;case 3:showInfo("如果登录成功,以后账号和密码会自动输入!");break;case 4:showInfo("网络未连接!");break;case 5:showInfo("用户账户是必填项!");break;case 6:showInfo("用户口令是必填项!");break;default:break;}super.handleMessage(msg);}/** * 显示提示信息 * @param info */public void showInfo(String info){Toast.makeText(activity.getApplicationContext(),info, Toast.LENGTH_SHORT).show();}}
而后,在Login.java代码中使用:
// 实现Handlerprivate Handler handler;// 消息private Message msg;...handler = new MsgHandler(Login.this);
在需要使用Toast的线程使用:
msg = handler.obtainMessage();//其中这句与msg.arg1一起使用,以避免再次运行程序时提示msg.arg1定义的值已使用,如This message is already in use.msg.arg1 = 1;handler.sendMessage(msg);
使用示例如:
Thread loginThread = new Thread(new Runnable() {@Overridepublic void run() {// 执行输入校验if (validate()) {// 如果登录成功if (loginPro()) {msg = handler.obtainMessage();msg.arg1 = 1;handler.sendMessage(msg);// 启动Main ActivityIntent intent = new Intent(Login.this, Main.class);startActivity(intent);Bundle bundle = new Bundle();bundle.putString("MAP_USERNAME", userName);intent.putExtras(bundle);// 转向登陆后的页面startActivity(intent);} else {proDialog.dismiss();msg = handler.obtainMessage();msg.arg1 = 2;handler.sendMessage(msg);}}});loginThread.start();
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- Android—网络编程
- android: Can't create handler inside thread that has not cal
- monodroid开发之--call Hanlder
- [置顶] Android消息机制Handler、Looper、MessageQueue源码分析
- Android——实时显示系统时间
- Android/Java线程池总结
- 《Android开发艺术探索》读书笔记——Handler消息机制(ThreadLoca
- 友盟三方登录,分享,推送demo