This code fetches content from the web without blocking the UI (runs in the background in a Thread). Once finished, it posts a Handler that is picked up by the UI as soon as possible.
- import java.io.BufferedInputStream;
- import java.io.InputStream;
- import java.net.URL;
- import java.net.URLConnection;
- import org.apache.http.util.ByteArrayBuffer;
- public class Iconic extends Activity {
- private String html = "";
- private Handler mHandler;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mHandler = new Handler();
- checkUpdate.start();
- }
- private Thread checkUpdate = new Thread() {
- public void run() {
- try {
- URL updateURL = new URL("http://iconic.4feets.com/update");
- URLConnection conn = updateURL.openConnection();
- InputStream is = conn.getInputStream();
- BufferedInputStream bis = new BufferedInputStream(is);
- ByteArrayBuffer baf = new ByteArrayBuffer(50);
- int current = 0;
- while((current = bis.read()) != -1){
- baf.append((byte)current);
- }
- /* Convert the Bytes read to a String. */
- html = new String(baf.toByteArray());
- mHandler.post(showUpdate);
- } catch (Exception e) {
- }
- }
- };
- private Runnable showUpdate = new Runnable(){
- public void run(){
- Toast.makeText(Iconic.this, "HTML Code: " + html, Toast.LENGTH_SHORT).show();
- }
- };
- }
原文:http://www.androidsnippets.org/snippets/1/