/**
* 主线程 ---UI线程,不可以阻塞, 如果阻塞会报ANR(application not response)
* 子线程---, 耗时操作,联网就是耗时操作;
* 联网需要,申请权限申请联网的权限;
* <p>
* 1--控件
* 2--点击事件
* 3---请求网络
* 4 借助handler更新UI;
*/
public class MainActivity extends AppCompatActivity {
public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
String urlBitmap = "https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg";
String tag = "wzq";
private ImageView iv;
private TextView tv;
@SuppressLint("HandlerLeak")
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int what = msg.what;
if (what == 1) {
String result = (String) msg.obj;
tv.setText(result);
}
}
};
/**
* alt+enter 自动补全
* fbc --再tabfindViewByIde的快捷键;
* ctrl+alt +F 声明全局变量
* ctrl+alt +L 格式化代码
* ctro+p 参数提示
* f2 --定位代码错误位置
* <p>
* 处理接口中的中文拼接问题
* String type = "中国";
* String encodeType = URLEncoder.encode(type);
* String murl = "http://api.expoon.com/AppNews/getNewsList/" + encodeType +"/1/p/1";
*
* @param savedInstanceState
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
iv = (ImageView) findViewById(R.id.iv);
setOnClickListener();
}
//设置监听
private void setOnClickListener() {
//文字的点击事件
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//请求网络,必须开子线程,不能直接在主线程用请求数据;
//子线程不能更新UI;
new Thread() {
@Override
public void run() {//子线程中请求数据
super.run();
try {
URL url = new URL(urlString);//专门处理网络请求的一个类,把接口包装成url对象;
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
int responseCode = urlConnection.getResponseCode();//获取请求网络的状态码
if (responseCode == 200) {
InputStream inputStream = urlConnection.getInputStream();//得到服务器返回的数据流;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();//可拼接字符串;
String temp = "";
while ((temp = bufferedReader.readLine()) != null) {
stringBuilder.append(temp);
}
String result = stringBuilder.toString();
Log.e("wzq--result", result);
// tv.setText(result);这行代码,有问题,子线程不能直接更新UI,需要借助handler;
Message message = new Message();
message.what = 1;
message.obj = result;
handler.sendMessage(message);
} else {
//do nothing
}
} catch (MalformedURLException e) {
e.printStackTrace();
Log.e("wzq", e.toString());
} catch (IOException e) {
e.printStackTrace();
Log.e("wzq", e.toString());
}
}
}.start();
}
});
//图片的点击事件
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
* 主线程 ---UI线程,不可以阻塞, 如果阻塞会报ANR(application not response)
* 子线程---, 耗时操作,联网就是耗时操作;
* 联网需要,申请权限申请联网的权限;
* <p>
* 1--控件
* 2--点击事件
* 3---请求网络
* 4 借助handler更新UI;
*/
public class MainActivity extends AppCompatActivity {
public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
String urlBitmap = "https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg";
String tag = "wzq";
private ImageView iv;
private TextView tv;
@SuppressLint("HandlerLeak")
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int what = msg.what;
if (what == 1) {
String result = (String) msg.obj;
tv.setText(result);
}
}
};
/**
* alt+enter 自动补全
* fbc --再tabfindViewByIde的快捷键;
* ctrl+alt +F 声明全局变量
* ctrl+alt +L 格式化代码
* ctro+p 参数提示
* f2 --定位代码错误位置
* <p>
* 处理接口中的中文拼接问题
* String type = "中国";
* String encodeType = URLEncoder.encode(type);
* String murl = "http://api.expoon.com/AppNews/getNewsList/" + encodeType +"/1/p/1";
*
* @param savedInstanceState
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
iv = (ImageView) findViewById(R.id.iv);
setOnClickListener();
}
//设置监听
private void setOnClickListener() {
//文字的点击事件
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//请求网络,必须开子线程,不能直接在主线程用请求数据;
//子线程不能更新UI;
new Thread() {
@Override
public void run() {//子线程中请求数据
super.run();
try {
URL url = new URL(urlString);//专门处理网络请求的一个类,把接口包装成url对象;
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
int responseCode = urlConnection.getResponseCode();//获取请求网络的状态码
if (responseCode == 200) {
InputStream inputStream = urlConnection.getInputStream();//得到服务器返回的数据流;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();//可拼接字符串;
String temp = "";
while ((temp = bufferedReader.readLine()) != null) {
stringBuilder.append(temp);
}
String result = stringBuilder.toString();
Log.e("wzq--result", result);
// tv.setText(result);这行代码,有问题,子线程不能直接更新UI,需要借助handler;
Message message = new Message();
message.what = 1;
message.obj = result;
handler.sendMessage(message);
} else {
//do nothing
}
} catch (MalformedURLException e) {
e.printStackTrace();
Log.e("wzq", e.toString());
} catch (IOException e) {
e.printStackTrace();
Log.e("wzq", e.toString());
}
}
}.start();
}
});
//图片的点击事件
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}