赞
踩
- //主线程中接收子线程发送的消息并处理
- 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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。