用户登入-Handler和Thread

从上一篇之后,我完善了我的软件的登入界面。 

当点击登入按钮之后,ProgressBar 和连接网络的返回用户验证结果的是两个异步的线程。当返回用户验证结果后则返回主线程继续执行。

 public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.login);
loginBtn = (Button)findViewById(R.id.login_btn_login);
//线程启动
t.start();
loginBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
setProgressBarIndeterminateVisibility(true);
if(!ProgressBarfalg)
{
ProgressBarfalg = true;
t.run();
}
}
});
}
//获取登入返回结果线程
Thread t = new Thread(new Runnable(){
@Override
public void run() {
while(ProgressBarfalg)
{
//对文本框中输入的字符串有效性进行检查
Loginresult =login();
Message msg = handler.obtainMessage();
msg.arg1 = 1;
msg.arg2 = 1;
handler.sendMessage(msg);
ProgressBarfalg = false;
}
return;
}
});
//主线程。接受Messagex
Handler handler = new Handler(){
public void handleMessage(Message arg0) {
//将要执行的线程放入到队列当中
if(arg0.arg1==1&&arg0.arg2==1)
{
if(Loginresult)
{
Check();
}
else
{
myInterface.showDialog("用户名称或者密码错误,请重新输入!",LoginActivity.this);
setProgressBarIndeterminateVisibility(false);
}
arg0.arg1=0;
arg0.arg2=0;
}
}
};



posted on 2011-11-05 16:29  xtl  阅读(210)  评论(0编辑  收藏  举报

导航