今天,在Android子线程想使用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();



更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. Android—网络编程
  3. android: Can't create handler inside thread that has not cal
  4. monodroid开发之--call Hanlder
  5. [置顶] Android消息机制Handler、Looper、MessageQueue源码分析
  6. Android——实时显示系统时间
  7. Android/Java线程池总结
  8. 《Android开发艺术探索》读书笔记——Handler消息机制(ThreadLoca
  9. 友盟三方登录,分享,推送demo

随机推荐

  1. Android(安卓)中 drawTextOnPath 文字效
  2. Android(安卓)如何去除Launcher上默认的g
  3. android 中的 openGL引擎的移植
  4. ROS(indigo) turtlebot2 + android一些有
  5. 学习android之布局
  6. android 按钮设计中state_selected属性
  7. Android笔记四 虚拟机Dalvik、Android各
  8. textview中加链接
  9. android音频口通信(一)——2FSK信号调制
  10. Android学习笔记(4)——Android(安卓)App