在send()方法中,
String param = "username="
+ URLEncoder.encode(edit_Username.getText().toString(), "utf-8")
+ "&password="
+ URLEncoder.encode(edit_Password.getText().toString(), "utf-8"); //连接要提交的数据
password的前面为什么要加连字符&呢?
handler = new Handler() { //如果服务器返回值为“ok”证明用户名密码正确并跳转登录后界面否则给出相应的提示信息
@Override
public void handleMessage(Message msg) {
if ("ok".equals(result)) { //如果服务器返回值为“ok”,证明用户名、密码输入正确
//跳转登录后界面
Intent in = new Intent(MainActivity.this, MessageActivity.class);
startActivity(in);
}else {
//用户名、密码错误的提示信息
Toast.makeText(MainActivity.this, "请填写正确的用户名和密码!",
Toast.LENGTH_SHORT).show();
}
super.handleMessage(msg);
}
};
new Thread(new Runnable() { // 创建一个新线程,用于从网络上获取文件
public void run() {
send(); //调用send()方法,用于发送用户名、密码到Web服务器
Message m = handler.obtainMessage(); // 获取一个Message
handler.sendMessage(m); // 发送消息
}
}).start(); // 开启线程
想问:"ok".equals(result),为什么Web应用传递的应用指定ok是赋值给result?result是在send()方法中通过循环逐行读取的内容啊?不应该是ok啊?
在按钮的单击事件监听器函数中,为什么new Hander()每次都要放在new Thread()的前面?应该是先调用Thread()中的send(),然后在Hander()中的handleMessage()中根据返回的结果执行操作啊?这几个函数执行顺序是什么?