国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Eventbus的使用(一)

2019-11-06 09:53:17
字體:
來源:轉載
供稿:網友

Eventbus的使用(一)

學習android的過程中,感覺最令我頭疼的莫過于通信了,無論是android中線程之間的通信、進程之間的通信,還是java與c++的通信,有時候真的很抓狂。遠遠難于實現android中的某個功能。 Eventbus是一款針對Android優化的發布/訂閱事件總線。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,線程之間傳遞消息.優點是開銷小,代碼更優雅,以及將發送者和接收者解耦。之前一直在使用Handler進行通信,發現Eventbus突出的特點就是解耦性。下面介紹來一個線程之間的通信,原理都一樣,很好學。 下載eventbus.jar:http://pan.baidu.com/s/1nvuLv9v

直接上傳代碼

主要分為五個步驟

@requires_authorization**MainFragment.java**package com.example.xhm.myapplication.activity.activity.fragment;import android.os.Bundle;import android.support.v4.widget.SwipeRefreshLayout;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ListView;import com.alibaba.fastjson.JSON;import com.example.xhm.myapplication.R;import com.example.xhm.myapplication.activity.activity.adapter.MainAdapter;import com.example.xhm.myapplication.activity.activity.bean.Beauty;import com.example.xhm.myapplication.activity.activity.bean.MainData;import com.example.xhm.myapplication.activity.activity.bean.MainDataItem;import com.example.xhm.myapplication.activity.activity.bean.User;import com.example.xhm.myapplication.activity.activity.util.Constant;import com.example.xhm.myapplication.activity.activity.util.FirstEvent;import com.example.xhm.myapplication.activity.activity.util.HttpUtil;import com.example.xhm.myapplication.activity.activity.util.RefreshLayout;import java.util.ArrayList;import java.util.List;import de.greenrobot.event.EventBus;public class MainFragment extends BaseFragment { PRivate View view; private ListView lvMain; private MainAdapter mainAdapter; private static final String TAG="MainFragment"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view=inflater.inflate(R.layout.fragment_main, container, false); return view; } @Override public void initViews() { lvMain= (ListView) view.findViewById(R.id.lv_main); } @Override public void initData() { //第一步:注冊EventBus EventBus.getDefault().register(this); HttpUtil httpUtil=new HttpUtil(getContext()); String json= httpUtil.getString(Constant.MAIN_URL); } @Override public void setListeners() { } //第四步 // 將線程中的信息傳遞到主線程中,參數為線程中引用的事件。 public void onEventMainThread(FirstEvent event){ String msg=event.getmMsg(); MainData mainData= JSON.parSEObject(msg, MainData.class); Log.e(TAG,"mainData="+mainData.toString()); List<Beauty> beautyList=new ArrayList<>(); List<MainDataItem> trips=mainData.getTrips(); for(int i=0;i<trips.size();i++){ MainDataItem mainDataItem=trips.get(i); User user= mainDataItem.getUser(); Beauty beauty=new Beauty(); beauty.setPopular_place_str(beauty.getPopular_place_str()); beauty.setAvatar_s(user.getAvatar_m()); beauty.setCover_image_default(mainDataItem.getCover_image_default()); beauty.setDay_count(mainDataItem.getDay_count()); beauty.setLast_day(mainDataItem.getLast_day()); beauty.setName(mainDataItem.getName()); beauty.setUserName(user.getName()); beauty.setView_count(mainDataItem.getView_count()); beautyList.add(beauty); } Log.e(TAG,"trips.size="+trips.size()); mainAdapter=new MainAdapter(getContext(),beautyList); lvMain.setAdapter(mainAdapter); } //第五步 //記得注銷EventBus,在Activity退出時要注銷,否則會出現異常。 @Override public void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }}**FirstEvent.java**package com.example.xhm.myapplication.activity.activity.util;/** * Created by xhm on 2017/2/23. *///第二步:創建一個事件,類似set和get的效果。public class FirstEvent { private String mMsg; public FirstEvent(String msg){ mMsg=msg; } public String getmMsg(){ return mMsg; }}**HttpUtil.java**package com.example.xhm.myapplication.activity.activity.util;import android.content.Context;import android.util.Log;import com.android.volley.RequestQueue;import com.android.volley.Response;import com.android.volley.VolleyError;import com.android.volley.toolbox.JsonObjectRequest;import com.android.volley.toolbox.Volley;import org.json.JSONObject;import java.io.BufferedInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.ProtocolException;import java.net.URL;import de.greenrobot.event.EventBus;/** * Created by xhm on 2017/2/23. */public class HttpUtil { private Context context; public HttpUtil(Context context){ this.context=context; } public String getMainJson(final String path) { new Thread(new Runnable() { @Override public void run() { try { URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setUseCaches(false); conn.setDoOutput(false); conn.setDoInput(true); int responseCode = conn.getResponseCode(); if (responseCode == 200) { InputStream is = conn.getInputStream(); String json = inputStream2String(is); //第三步:引用創建的事件進行添加信息 EventBus.getDefault().post(new FirstEvent(json)); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); return ""; } private String inputStream2String(InputStream is) throws IOException { String json; BufferedInputStream bis = new BufferedInputStream(is); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[64]; int leng = -1; while ((leng = bis.read(buffer)) != -1) { baos.write(buffer, 0, leng); } bis.close(); is.close(); baos.flush(); json = new String(baos.toByteArray()); baos.close(); return json; } public String getString(String url) { RequestQueue mQueue = Volley.newRequestQueue(context); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { String json= response.toString(); EventBus.getDefault().post(new FirstEvent(json)); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", "xxxxxhhhmm err"+error.getMessage(), error); } }); mQueue.add(jsonObjectRequest); return ""; }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新绛县| 长兴县| 汝阳县| 酒泉市| 于都县| 永胜县| 社旗县| 乐昌市| 客服| 安仁县| 尼勒克县| 精河县| 镇巴县| 淳安县| 项城市| 姚安县| 陇南市| 会理县| 石屏县| 遂溪县| 依兰县| 喀喇沁旗| 阿鲁科尔沁旗| 金昌市| 沁水县| 湖口县| 会宁县| 福清市| 三台县| 库车县| 台中县| 溧水县| 唐河县| 云霄县| 漳州市| 香格里拉县| 南丰县| 深水埗区| 凭祥市| 沽源县| 垣曲县|