在Android升级的过程中,为了去提高用户的感受,不允许一些耗时的操作直接在主线程中做。
从Android4.0开始强制去检查一些耗时的操作不能放到主线中做。
UI线程:在收到的服务器的数据解析后,将数据展现在ui界面上。
在哪个线程创建的视图,那么就只能在哪个线程中去更改界面。
不允许非UI线程去更新UI界面。
<uses-permission android:name="android.permission.INTERNET"/>
package com.lfz.android_heima_148_network;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class MainActivity extends Activity {
private EditText eT;
private ImageView iv;
private String string;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
eT=findViewById(R.id.pathET);
iv=findViewById(R.id.iv);
}
//连接网络的API,URL类
public void getImage(View view) {
string = eT.getText().toString();
try {
//建立一个连接
URL url = new URL(string);
try {
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//设置请求的方式,GET,POST
urlConnection.setRequestMethod("GET");
//设置超时时间
urlConnection.setConnectTimeout(8000);
//返回的数据的类型
String contentType = urlConnection.getContentType();
System.out.println(contentType);
//数据的长度
int contentLength = urlConnection.getContentLength();
System.out.println(contentLength);
String server = urlConnection.getHeaderField("Server");
System.out.println(server);
//获得服务器返回的状态码,根据状态码去判断服务器是否响应成功
//200,404,500,302,304
int responseCode = urlConnection.getResponseCode();
if(responseCode==200){
//状态码为200,则服务器响应成功
InputStream in = urlConnection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(in);
iv.setImageBitmap(bitmap);
in.close();
}
urlConnection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}