android实现网页源码查看器。思路是,先把组件设计好,然后编写java代码来实现整个流程。主要通过实现网页源码查看器的过程,来理解handle的流程。
第一部分:
以上图片是组件的代码。
第二部分:
public class MainActivity extends AppCompatActivity {
private EditText et_url;
private Button btn_show;
private TextView tv_code;
private Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
String temp = (String) msg.obj;
tv_code.setText(temp);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_url = (EditText) findViewById(R.id.et_url);
btn_show = (Button) findViewById(R.id.btn_show);
tv_code = (TextView) findViewById(R.id.tv_code);
btn_show.setOnClickListener(new MyonClicklistener());
}
private class MyonClicklistener implements View.OnClickListener {
@Override
public void onClick(View v){
new Thread(){
public void run(){
String path = et_url.getText().toString().trim();
URL url = null;
try {
url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(10000);
int code = connection.getResponseCode();
if(code==200){
InputStream inputStream = connection.getInputStream();
String result = Utils.getStringFromStream(inputStream);
Message msg = new Message();
msg.obj=result;
handler.sendMessage(msg);
//tv_code.setText(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
}
这个代码是main的代码,还需要一个类,
public class Utils {
public static String getStringFromStream(InputStream inputStream) throws IOException {
ByteArrayOutputStream baso = new ByteArrayOutputStream();
int len = -1;
byte[] buffer = new byte[1024];
while((len = inputStream.read(buffer))!=-1){
baso.write(buffer, 0, len);
}
inputStream.close();
byte[] byteArray = baso.toByteArray();
return new String(byteArray);
}
}
这个图片是运行结果图片。
一共需要这两个类。
总结,在郑州app开发中,尤其需要注意:
1、联网必须在子线程中操作。
2、子线程不能修改UI,修改UI必须在主线程进行。