android多线程Handler

原创 2015年11月20日 11:46:43
package com.example.thread_1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Handler handler;
	private Button button1;
	private String result1 = null, result2 = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button1 = (Button) findViewById(R.id.button1);
		//final RunClass runClass = new RunClass();
		button1.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO 自动生成的方法存根
				Run1();// //桐城市
				Run2();// /舒城

				//runClass.RunThread3();// /巢湖
				//runClass.RunThread4();// /庐江
			}
		});

		handler = new Handler() {

			@Override
			public void handleMessage(Message msg) {
				// TODO 自动生成的方法存根
				// super.handleMessage(msg);
				switch (msg.what) {
				case 1:
					if (result1 != null) {
						Log.i("result1", result1);
					}

					break;
				case 2:
					if (result2 != null) {
						Log.i("result2", result2);
					}
					break;

				default:
					Log.i("错误", "错误");
					break;
				}

			}

		};

	}// /onCreate

	public void Run1() {
		new Thread(new Runnable() {

			@Override
			public void run() {
				// TODO 自动生成的方法存根
				send1();
				Message m = new Message();
				m.what = 1;
				handler.sendMessage(m);

			}

		}).start();

	}

	// /
	private void send1() {
		// TODO 自动生成的方法存根 ////桐城市
		String target1 = "http://api.map.baidu.com/geocoder?output=json&location=31,117&key=Gl....";
		URL url1;

		try {
			url1 = new URL(target1);

			HttpURLConnection conn1 = (HttpURLConnection) url1.openConnection();

			BufferedReader buffer1 = new BufferedReader(new InputStreamReader(
					conn1.getInputStream()));
			String inputLine1 = null;
			while ((inputLine1 = buffer1.readLine()) != null) {
				result1 += inputLine1 + "\n";
			}
		} catch (MalformedURLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}

	}// /send

	public void Run2() {
		new Thread(new Runnable() {

			@Override
			public void run() {
				// TODO 自动生成的方法存根 ////舒城
				String target2 = "http://api.map.baidu.com/geocoder?output=json&location=31.3,117&key=Gl.....";
				URL url2;

				try {
					url2 = new URL(target2);

					HttpURLConnection conn2 = (HttpURLConnection) url2
							.openConnection();

					BufferedReader buffer2 = new BufferedReader(
							new InputStreamReader(conn2.getInputStream()));
					String inputLine2 = null;
					while ((inputLine2 = buffer2.readLine()) != null) {
						result2 += inputLine2 + "\n";
					}
					//Log.i("result2", result2);
					//
					// in_2.close();
					// conn_2.disconnect();
					Message m = new Message();
					m.what = 2;
					handler.sendMessage(m);
				} catch (MalformedURLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				} catch (IOException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}

		}).start();

	}

}

版权声明:本文为博主原创文章,转载请说明出处

Android多线程消息处理机制(三) Handler部分源码分析

此文一起来看下Handler的部分源码,不用怕很简单,有英文的地方我都翻译了。 把里面相关的方法过一眼,你瞬间会明白很多。高手就不用看了,去过你的荣华富贵花天酒地。 我一致认为,想学好某一技术,首先是...

android 多线程 looper handler

  • 2011年07月31日 19:06
  • 48KB
  • 下载

android多线程handler/message机制详解

  • 2011年06月20日 12:06
  • 121KB
  • 下载

Android多线程中使用Handler更新ListView控件数据

在Android应用开发中,免不了涉及耗时的操作,比如网络数据更新等。如果直接在主线程中完成,不给出适当的提示信息,则长时间的等待会给用户一个错觉:程序死了!所以,针对耗时的操作,使用多线程操作结合P...
  • frdde
  • frdde
  • 2012年03月15日 22:46
  • 4382

Android 多线程:使用Thread和Handler

  • 2014年08月18日 14:27
  • 22KB
  • 下载

Android多线程消息处理机制(四) Message、MessageQueue源码解析和Handler综合使用

先分析完Message,MessageQueue源码 /** * 获取Message的最好办法是调用Message.obtain()或Handler.obtainMessage()方法 * 这将会...

Android 开发之多线程处理、Handler 详解

Android开发过程中为什么要多线程 我们创建的Service、Activity以及Broadcast均是一个主线程处理,这里我们可以理解为UI线程。但是在操作一些耗时操作时,比如I/O读写的...

Android多线程----异步消息处理机制之Handler详解

感觉此篇文章很全面,很有价值,特此转载: 【声明】  欢迎转载,但请保留文章原始出处→_→  生命壹号:http://www.cnblogs.com/smyhvae/ ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android多线程Handler
举报原因:
原因补充:

(最多只允许输入30个字)