这篇文章介绍了Android中创建子线程进行网络访问的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考
//主线程中接收子线程发送的消息并处理
private Handler handler=new Handler(){
@SuppressLint("HandlerLeak")
public void handleMessage(Message msg){
try {
switch (msg.what){
case 0:
String Listeningresponse= msg.getData().getString("Listeningdate");
case 1:
String response = msg.getData().getString("date");
case 2:
vsnfilename=msg.getData().getString("vsndate");
default:
Log.e(TAG, " handler fail in send" );
}
}catch (Exception e){
e.printStackTrace();
}
}
};
上面代码是在主线程中接收子线程发送的消息,根据消息标识处理后续操作。下面是子线程代码:
开启子线程服务:new Thread(runnable).start();
子线程执行的任务:
Runnable runnabletday = new Runnable(){
@Override
public void run() {
try {
//String url=ResourceMethod.UrlSplicingMinute();
String url2=ResourceMethod.UrlSplicingDay();
hadata=getDateFromSever(url2);
Message msg = new Message();
Bundle bundle =new Bundle();
bundle.putString("date", hadata);// 这是数据标志,在接收的时候方便辨认
msg.setData(bundle);
msg.what = 1;
handler.sendMessage(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
代码 Bundle bundle =new Bundle(); bundle.putString("date", hadata)中data是数据标识,hadata是需要发送的数据。可以是int,string,object等。msg.what = 1是设置的消息标识位,在接收消息的时候作为区分消息。
hadata=getDateFromSever(url2)是访问url2获取数据的方法:具体实现如下:
//进行http请求并获取返回的数据
public String getDateFromSever(String url) {
try {
OkHttpClient client = new OkHttpClientFactory().getInstance();
Request request = new Request.Builder()
.url(url)
.get()
.build();
Response response = client.newCall(request).execute();
Log.d(TAG, "Ipaws response="+response);
String responseData = response.body().string();
if (response.isSuccessful()) {
return responseData;
}else {
Log.d(TAG, "responseData: error");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
以上所述是小编给大家介绍的创建子线程对Android进行网络访问,希望对大家有所帮助。在此也非常感谢大家对编程学习网网站的支持!
沃梦达教程
本文标题为:创建子线程对Android进行网络访问
猜你喜欢
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- Android studio实现动态背景页面 2023-05-23
- 详解flutter engine 那些没被释放的东西 2022-12-04
- iOS 对当前webView进行截屏的方法 2023-03-01
- Android实现监听音量的变化 2023-03-30
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- Android实现轮询的三种方式 2023-02-17
- Flutter实现底部和顶部导航栏 2022-08-31
