从服务器端加载JSON数据的优化
为了实现代码的复用和进一步理解Handler的相关知识,我们对代码进行如下优化。Activity文件
HanderTest_Text_New.java
[java] view plaincopy
package com.app.myhandler;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.app.util.MyThread;
public class HanderTest_Text_New extends Activity {
private Button button1, button2;
private TextView textView1, textView2;
private Handler handler;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hander_text_new);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
textView1 = (TextView) findViewById(R.id.textView1);
textView2 = (TextView) findViewById(R.id.textView2);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
progressBar.setVisibility(View.VISIBLE);
new MyThread(handler,"http://10.0.2.2:8888/android/1.jsp",1).start();
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
progressBar.setVisibility(View.VISIBLE);
new MyThread(handler,"http://10.0.2.2:8888/android/2.jsp",2).start();
}
});
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case 1:
textView1.setText(msg.obj.toString());
textView2.setText("文本二");
progressBar.setVisibility(View.GONE);
break;
case 2:
textView1.setText("文本一");
textView2.setText(msg.obj.toString());
progressBar.setVisibility(View.GONE);
break;
default:
break;
}
}
};
}
}
MyThread文件
[java] view plaincopy
package com.app.util;
import java.util.Map;
import android.os.Handler;
import android.os.Message;
public class MyThread extends Thread{
private Handler handler;
private String url;
private int what;
public MyThread(Handler handler, String url, int what) {
this.handler = handler;
this.url = url;
this.what = what;
}
@Override
public void run() {
// TODO Auto-generated method stub
String result = ApplicationDemo.handleGet(url);
Message message = handler.obtainMessage();
message.what = what;
message.obj = result;
//向handler发送消息
handler.sendMessage(message);
}
}
XML布局文件
[html] view plaincopy
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >