`
DarkWingBoy
  • 浏览: 50812 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

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();
		}
	}

}
分享到:
评论

相关推荐

    android ProgressDialog 自定义样式

    本篇文章将详细讲解如何在Android中自定义ProgressDialog,以及如何实现带加载图片和文字说明的功能。 首先,我们需要创建一个新的类来继承自Dialog,因为ProgressDialog本质上就是Dialog的一个子类。这个类将作为...

    android demo,progressDialog的处理

    本示例将深入探讨如何在Android应用中使用ProgressDialog,并通过线程来实现动态加载数据。 首先,ProgressDialog是Android SDK提供的一个对话框类,用于显示一个带有可选消息和进度条的对话框。它可以有两种模式:...

    android 自定义组合progressdialog进度条

    android 自定义组合progressdialog进度条,方便你的使用............................................................................................

    android 程序加载中,请稍后---- ProgressDialog与线程整合应用

    在Android开发中,当应用程序需要执行耗时操作,如网络请求、数据库操作或大量计算时,为了提供良好的用户体验,我们通常会使用ProgressDialog显示一个加载指示器,告知用户程序正在后台处理,并请求他们稍等片刻。...

    Android 自带progressDialog的使用

    在Android开发中,ProgressDialog是一个非常常见的组件,它用于在用户执行耗时操作(如网络请求、数据加载等)时提供反馈,展示一个等待界面。在本文中,我们将深入探讨如何在Android应用程序中有效地使用自带的...

    android关于ProgressBar和ProgressDialog的使用

    在Android开发中,ProgressBar和ProgressDialog是两种常用的进度条控件,用于展示应用程序执行的后台任务或数据加载状态。本文将详细讲解如何在Android应用中使用这两种控件。 首先,我们来了解一下`ProgressBar`。...

    android自定义ProgressDialog样式

    android自定义ProgressDialog样式详解,一分钟教会你如何自定义android样式。

    android progressDialog各种用法

    android progressDialog各种用法android progressDialog各种用法android progressDialog各种用法android progressDialog各种用法

    android 自定义ProgressDialog对话框

    在Android开发中,ProgressDialog是一种常见的UI组件,用于在执行耗时操作时向用户显示进度,以提供更好的用户体验。默认的ProgressDialog通常包含一个圆形进度条,但有时为了满足特定的界面设计或功能需求,开发者...

    Android 自定义progressDialog实现

    在Android开发中,自定义`ProgressDialog`是一种常见的需求,它允许开发者根据应用的UI风格定制加载提示界面。本文将深入探讨如何实现一个自定义的`ProgressDialog`,并结合源码和工具来创建一个符合设计需求的加载...

    Android中自定义ProgressDialog实现加载滚动条效果,例如显示“请稍后……”

    下面我们将深入探讨如何在Android中自定义ProgressDialog,实现加载滚动条效果。 首先,我们需要创建一个新的布局文件,比如`custom_progress_dialog.xml`,来定义自定义对话框的视图结构。在这个布局文件中,我们...

    Android 自定义ProgressDialog实例

    在Android开发中,ProgressDialog是一种常见的UI组件,用于在应用程序执行耗时操作时向用户显示进度指示,例如网络请求、数据加载等。然而,系统默认的ProgressDialog样式可能无法满足所有设计需求,因此开发者经常...

    Android_UI_ProgressDialog

    ProgressDialog是Android SDK提供的一种UI组件,它允许开发者在后台执行耗时操作时向用户显示一个进度指示器,以告知用户应用程序正在处理数据或执行任务。在本教程中,我们将深入探讨如何使用ProgressDialog来提升...

    Android自定义类似ProgressDialog效果的Dialog

    android:text="正在加载数据,请稍候..." /&gt; &lt;!-- 如果需要取消功能,可以添加以下按钮 --&gt; android:id="@+id/buttonCancel" android:layout_width="wrap_content" android:layout_height="wrap_content" ...

    android demo,ProgressDialog的源代码的实现。

    在Android开发中,ProgressDialog是一个非常常见的组件,它用于在用户等待长时间操作完成时显示一个进度指示器,以提供用户友好的界面体验。本篇将详细探讨`ProgressDialog`的源码实现,以及如何在Android应用中使用...

    文件复制及进度条 android 文件复制 进度条 progressdialog

    在Android开发中,文件复制和进度条的显示是常见的需求,尤其在移动应用中,用户可能需要将数据从一个位置移动到另一个位置,或者在后台下载文件时展示进度。`ProgressDialog`是Android SDK提供的一种对话框组件,...

    android中ProgressDialog的使用

    Android推荐使用AsyncTask与ProgressDialog结合,以便在后台线程执行耗时操作,同时在UI线程更新ProgressDialog。`onPreExecute()`方法中显示ProgressDialog,`onProgressUpdate()`更新进度,`onPostExecute()`关闭...

    Android自定义ProgressDialog

    ProgressDialog是Android SDK提供的一种默认的加载对话框,通常有圆形和水平两种样式。默认情况下,它会显示一个旋转的指示器或者进度条,并配以简单的文字描述。要使用ProgressDialog,首先需要在布局文件中声明,...

    034_android_UI组件之 ProgressDialog 和Message

    ProgressDialog 是一个对话框式的组件,通常用于在执行耗时操作(如网络请求、数据加载等)时向用户显示进度,给用户一个反馈,表明应用正在后台工作并未挂起。ProgressDialog有两种主要样式:圆形进度条和垂直滚动...

Global site tag (gtag.js) - Google Analytics