当前位置:编程学习 > JAVA >>

异步加载数据的三种实现

[java] 
package com.testasyntextview; 
/**
 * 把获取的线程写到方法中(比较好)
 */ 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.text.Html; 
import android.text.Spanned; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
 
public class MethodTestAsynTextViewActivity extends Activity { 
    private TextView textView1; 
    private Button button1; 
    private Context context; 
    private ProgressDialog progressDialog; 
    private Spanned html; 
 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        context = this; 
        textView1 = (TextView) findViewById(R.id.textView1); 
        button1 = (Button) findViewById(R.id.button1); 
        button1.setOnClickListener(l); 
 
    } 
 
    private OnClickListener l = new OnClickListener() { 
 
        @Override 
        public void onClick(View v) { 
 
            progressDialog = ProgressDialog.show(context, "获取数据中", "等待"); 
            getHtmlDate(); 
 
        } 
    }; 
 
    private void getHtmlDate() {// 获取数据,把线程写入了其中 
        new Thread() { 
            public void run() { 
                Message msg = myHandler.obtainMessage(); 
                try { 
                    html = HttpUtil.fromHtml(HttpUtil 
                            .getHtml("http://wap.sina.com")); 
                    msg.what = 0; 
                } catch (Exception e) { 
                    e.printStackTrace(); 
                    msg.what = 1; 
                } 
 
                myHandler.sendMessage(msg); 
            } 
        }.start(); 
    } 
 
    Handler myHandler = new Handler() { 
 
        public void handleMessage(Message msg) { 
            switch (msg.what) { 
            case 0: 
                textView1.setText(html); 
                progressDialog.dismiss(); 
                break; 
            case 1: 
                textView1.setText("当前无数据"); 
                progressDialog.dismiss(); 
                break; 
            } 
            super.handleMessage(msg); 
        } 
    }; 
 

[java] 
package com.testasyntextview; 
 
/**
 * 使用AsyncTask类
 */ 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.text.Html; 
import android.text.Spanned; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
 
public class TestAsynTextViewActivity extends Activity { 
    private TextView textView1; 
    private Button button1; 
    private Context context; 
    private ProgressDialog progressDialog; 
    private Spanned html; 
 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        context = this; 
 
        progressDialog = new ProgressDialog(context); 
        progressDialog.setTitle("进度条"); 
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
 
        textView1 = (TextView) findViewById(R.id.textView1); 
        button1 = (Button) findViewById(R.id.button1); 
 

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,