android Thread 数据加载 ProgressDialog 请求超时处理 线程 Handler


package com.qihoinfo;

import java.util.HashMap;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONObject;
import com.qihoinfo.util.ClientService;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;

public class MainActivity extends Activity {
String requestByHttpGet = null;
String requestByHttpPost = null;
String returnResult ="";
String url_str = "http://192.168.1.67/androidjson.php";
Map<String, String> params = null;
TextView textView;


// 声明变量
private ProgressDialog pd;
// 定义Handler对象
private Handler handler = new Handler() {
@Override
// 当有消息发送出来的时候就执行Handler的这个方法
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
textView.setText(returnResult);
break;
default:
textView.setText("请求严重超时,请检查你的网络设置是否通畅!");
break;
}
// 只要执行到这里就关闭对话框
pd.dismiss();
}
};

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("tag", "onCreate()-->" + Thread.currentThread().getName());

textView = (TextView) findViewById(R.id.text);
processThread();
textView.setText(returnResult);

}

private void processThread() {
// 构建一个下载进度条
pd = ProgressDialog.show(MainActivity.this, "加载数据", "网络数据加载中......");
Log.i("tag", "processThread()-->" + Thread.currentThread().getName());
new Thread() {
@Override
public void run() {
Log.i("tag", "run()-->" + Thread.currentThread().getName());

//执行请求数据的方法
longTimeMethod();

if(returnResult.equals("")){
// 执行完毕后给handler发送一个超时消息
handler.sendEmptyMessage(1);
}else{
// 执行完毕后给handler发送一个空消息
handler.sendEmptyMessage(0);
}
}
}.start();

}

// 模拟下载文件的长耗时方法
private void longTimeMethod() {
try {
Log.i("tag", "longTimeMethod-->" + Thread.currentThread().getName());
Thread.sleep(0);
params = new HashMap<String, String>();
params.put("name", "张三");

try {
requestByHttpGet = ClientService.requestByHttpGet(url_str,
params, "UTF-8");
JSONArray jArray = new JSONArray(requestByHttpGet);
if (jArray.length() > 0 && jArray != null) {
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
// 通过返回的json储存的搜索过得mysql列表值进行获取
Log.e("json", json_data.toString());
returnResult += "\n您的名称是 :"
+ json_data.getString("uName") + "\nid:"
+ json_data.getString("id");
}
}

requestByHttpPost = ClientService.requestByHttpPost(url_str,
params, "UTF-8");
JSONArray jArray2 = new JSONArray(requestByHttpPost);
for (int i = 0; i < jArray2.length(); i++) {
JSONObject json_data = jArray2.getJSONObject(i);
// 通过返回的json储存的搜索过得mysql列表值进行获取
Log.e("json", json_data.toString());
returnResult += "\n您的名称是 :" + json_data.getString("uName")
+ "\nid:" + json_data.getString("id");
}
} catch (Exception e) {
e.printStackTrace();
}

} catch (InterruptedException e) {
e.printStackTrace();
}
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值