//子线程发消息,通知Handler完成UI更新
private void LoginConnect(String username,String userpassword) {
Toast.makeText(Login.this,"我--->子线程运行了!<------",Toast.LENGTH_SHORT).show();
Runnable run= new Runnable() {
@Override
public void run() {
//耗时操作,完成之后发送消息给Handler,完成UI更新;
String ret = DBUtil.LoginQuery(username,userpassword);//返回String类型的0或1
//数据传递
Message msg=new Message();
msg.what=1003;
Bundle data=new Bundle();
data.putString("result",ret);
msg.setData(data);
mHandler.sendMessage(msg);//TODO ?发送到主线程中?
}
};
new Thread(run).start();
}
private String isallow;
//主线程中定义handler
Handler mHandler=new Handler(){
public void handleMessage(android.os.Message msg){
Toast.makeText(Login.this,"我handler运行了!",Toast.LENGTH_SHORT).show();
switch (msg.what){
case 1003:
isallow = msg.getData().getString("result");//完成主界面更新,拿到数据
break;
default:
break;
}
}
};
前辈们好,感谢你们阅读我的提问。我是一名Android新手,希望得到你们的指教。
问题:求前辈指教,通过handler处理的消息能否在主线程中作为变量获取,而不是更新UI呢?
描述:这是我为了实现系统登录的代码,传入用户名和密码去数据库中比对,返回结果为String类型的0或1。我的理解是mHandler处理消息以后,isAllow应该被设为0或1,我想得到isAllow,在主线程中对其进行判断,实现登录。不知道能不能有这样的操作呢?(我看到的大多数都是更新UI)