android Thread 数据加载 ProgressDialog 请求超时处理 线程 Handler
16lz
2021-01-23
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() {@Overridepublic 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();}}}
更多相关文章
- Handler 内部类导致的内存泄露修改方法
- Android 在程序中重启APP的方法
- android studio AppCompatActivity中onCreate的两种方法
- Android截图方法
- ReactNative常见问题及解决方法
- Android Repo 超时的解决方法
- android的sqlite主键设置方法。
- java中Arraylist复制方法
- Android中完全退出APP的方法