Android Handler can read the network in the new thread.
Method 1:
Create a Thread and call the start method.
Instance:
Package com. example. android_handle; import java. io. bufferedInputStream; import java. io. inputStream; import java.net. URL; import java.net. URLConnection; import org. apache. http. util. byteArrayBuffer; import android. app. activity; import android. OS. bundle; import android. OS. handler; import android. OS. message; import android. view. view; import android. view. view. onClickListener; import android. widget. button; import and Roid. widget. textView; public class MainActivity extends Activity {private Button start; private TextView text; Handler handler = new Handler () {@ Override public void handleMessage (Message msg) {// TODO Auto-generated method stub text. append (msg. obj + "\ n") ;}}; Runnable newTread = new Runnable () {String content; @ Override public void run () {// TODO Auto-generated method stub // network processing // obtain Message completion Message msg = handler. obtainMessage (); // assign the try {URL uri = new URL ("http: // 112.74.78.53/scut-lib/" + "library/hotReading to the arg1 parameter of the message structure. php "); URLConnection ucon = uri. openConnection (); ucon. setConnectTimeout (10000); InputStream is = ucon. getInputStream (); BufferedInputStream bis = new BufferedInputStream (is); ByteArrayBuffer baf = new ByteArrayBuffer (100); int current = 0; while (current = bi S. read ())! =-1) {baf. append (byte) current);} content = new String (baf. toByteArray (), "UTF-8");} catch (Exception e) {content = "error";} msg. obj = content; handler. sendMessage (msg) ;};@ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); start = (Button) findViewById (R. id. start); text = (TextView) findViewById (R. id. text); start. setOnClickListener (new OnClickListener () {@ Override public void onClick (View v) {// TODO Auto-generated method stub Thread t = new Thread (newTread); t. start ();}});}}
Method 2:
Implemented using the logoff class in the android development framework
Logoff is a tool used to add a MessageQueue to a thread and wait cyclically. When there is a message, it will arouse the thread to process the message until the thread ends. Normally, logoff is not used, because for system components such as Activity and Service, Frameworks has initialized the thread (commonly known as the UI thread or main thread) for us and contains a logoff, and the message queue created by logoff, so the main thread will continue to run and process user events until some events (BACK) Exit.
If we need to create a new thread, and this thread needs to be able to process the message events sent by other threads cyclically, or to perform complex interaction with other threads for a long time, in this case, logoff is required to establish a message queue for the thread.
Logoff is also very simple, and there are few methods, the most important of which are four:
Public static prepare ();
Public static mylogoff ();
Public static loop ();
Public void quit ();
The usage is as follows:
1. Call lorule. prepare () in the run () method of each thread to initialize the message queue for the thread.
2. Call lorule. mylorule () to obtain the reference of this lorule object. This is not necessary, but if you need to save the logoff object, it must be after prepare (). Otherwise, the method called on this object may not be effective, such as logoff. quit () won't quit.
3. Add Handler in the run () method to process messages.
4. Add logoff. loop () call to start the thread's message queue and receive messages.
5. When you want to exit the message loop, call logoff. quit (). Note that this method is called on the object. Obviously, the object means to exit the specific logoff. If no other operation is performed in run (), the thread stops running.
Instance:
package com.example.android_handle;import java.io.BufferedInputStream;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import org.apache.http.util.ByteArrayBuffer;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.text.method.ScrollingMovementMethod;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity { private Button start; private TextView text; private Handler handler; private NewThread thread; private String s=""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = (Button) findViewById(R.id.start); text = (TextView) findViewById(R.id.text); text.setMovementMethod(ScrollingMovementMethod.getInstance()); handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub s = s + msg.obj + "\n"; text.setText(s); } }; start.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub thread = new NewThread(); } }); } private class NewThread extends Thread { private Handler mHandler; private Looper mLooper; private String content; public NewThread() { start(); } public void run() { Looper.prepare(); mLooper = Looper.myLooper(); mHandler = new Handler(mLooper) { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub Message newMsg = Message.obtain(); newMsg.obj = msg.obj; handler.sendMessage(newMsg); } }; try { URL uri = new URL("http://112.74.78.53/scut-lib/" + "library/hotReading.php"); URLConnection ucon = uri.openConnection(); ucon.setConnectTimeout(10000); InputStream is = ucon.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is); ByteArrayBuffer baf = new ByteArrayBuffer(100); int current = 0; while ((current = bis.read()) != -1) { baf.append((byte) current); } content = new String(baf.toByteArray(), "UTF-8"); } catch (Exception e) { content = e.toString(); } Message msg = Message.obtain(); msg.obj = content; mHandler.sendMessage(msg); Looper.loop(); } }}