亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

EventBus使用詳解(一)——初步使用EventBus

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

一、概述 EventBus是一款針對Android優化的發布/訂閱事件總線。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,線程之間傳遞消息.優點是開銷小,代碼更優雅。以及將發送者和接收者解耦。 1、下載EventBus的類庫 源碼:https://github.com/greenrobot/EventBus

2、基本使用

(1)自定義一個類,可以是空類,比如:

public class AnyEventType { public AnyEventType(){} }

(2)在要接收消息的頁面注冊:

eventBus.register(this);

(3)發送消息

eventBus.post(new AnyEventType event);

(4)接受消息的頁面實現(共有四個函數,各功能不同,這是其中之一,可以選擇性的實現,這里先實現一個):

public void onEvent(AnyEventType event) {}

(5)解除注冊

eventBus.unregister(this);

順序就是這么個順序,可真正讓自己寫,估計還是云里霧里的,下面舉個例子來說明下。 首先,在EventBus中,獲取實例的方法一般是采用EventBus.getInstance()來獲取默認的EventBus實例,當然你也可以new一個又一個,個人感覺還是用默認的比較好,以防出錯。

二、實戰

先給大家看個例子: 當擊btn_try按鈕的時候,跳到第二個Activity,當點擊第二個activity上面的First Event按鈕的時候向第一個Activity發送消息,當第一個Activity收到消息后,一方面將消息Toast顯示,一方面放入textView中顯示。

這里寫圖片描述

按照下面的步驟,下面來建這個工程:

1、基本框架搭建

想必大家從一個Activity跳轉到第二個Activity的程序應該都會寫,這里先稍稍把兩個Activity跳轉的代碼建起來。后面再添加EventBus相關的玩意。

MainActivity布局(activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn_try" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="btn_bty"/> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="match_parent"/> </LinearLayout>

新建一個Activity,SecondActivity布局(activity_second.xml)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.harvic.try_eventbus_1.SecondActivity" > <Button android:id="@+id/btn_first_event" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="First Event"/> </LinearLayout>

MainActivity.java (點擊btn跳轉到第二個Activity)

public class MainActivity extends Activity { Button btn; @Override PRotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn_try); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(getapplicationContext(), SecondActivity.class); startActivity(intent); } }); } }

到這,基本框架就搭完了,下面開始按步驟使用EventBus了。

2、新建一個類FirstEvent

package com.harvic.other; public class FirstEvent { private String mMsg; public FirstEvent(String msg) { // TODO Auto-generated constructor stub mMsg = msg; } public String getMsg(){ return mMsg; } }

這個類很簡單,構造時傳進去一個字符串,然后可以通過getMsg()獲取出來。

3、在要接收消息的頁面注冊EventBus:

在上面的GIF圖片的演示中,大家也可以看到,我們是要在MainActivity中接收發過來的消息的,所以我們在MainActivity中注冊消息。

通過我們會在OnCreate()函數中注冊EventBus,在OnDestroy()函數中反注冊。所以整體的注冊與反注冊的代碼如下:

package com.example.tryeventbus_simple; import com.harvic.other.FirstEvent; import de.greenrobot.event.EventBus; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { Button btn; TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注冊EventBus EventBus.getDefault().register(this); btn = (Button) findViewById(R.id.btn_try); tv = (TextView)findViewById(R.id.tv); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(getApplicationContext(), SecondActivity.class); startActivity(intent); } }); } @Override protected void onDestroy(){ super.onDestroy(); EventBus.getDefault().unregister(this);//反注冊EventBus } }

4、發送消息

發送消息是使用EventBus中的Post方法來實現發送的,發送過去的是我們新建的類的實例!

EventBus.getDefault().post(new FirstEvent("FirstEvent btn clicked"));

完整的SecondActivity.Java的代碼如下:

[java] view plain copy 在CODE上查看代碼片派生到我的代碼片package com.example.tryeventbus_simple; import com.harvic.other.FirstEvent; import de.greenrobot.event.EventBus; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class SecondActivity extends Activity { private Button btn_FirstEvent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); btn_FirstEvent = (Button) findViewById(R.id.btn_first_event); btn_FirstEvent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub EventBus.getDefault().post( new FirstEvent("FirstEvent btn clicked")); } }); } }

5、接收消息

接收消息時,我們使用EventBus中最常用的onEventMainThread()函數來接收消息,具體為什么用這個,我們下篇再講,這里先給大家一個初步認識,要先能把EventBus用起來先。 在MainActivity中重寫onEventMainThread(FirstEvent event),參數就是我們自己定義的類:

在收到Event實例后,我們將其中攜帶的消息取出,一方面Toast出去,一方面傳到TextView中;

public void onEventMainThread(FirstEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); Log.d("harvic", msg); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); }

完整的MainActiviy代碼如下:

package com.example.tryeventbus_simple; import com.harvic.other.FirstEvent; import de.greenrobot.event.EventBus; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { Button btn; TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault().register(this); btn = (Button) findViewById(R.id.btn_try); tv = (TextView)findViewById(R.id.tv); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(getApplicationContext(), SecondActivity.class); startActivity(intent); } }); } public void onEventMainThread(FirstEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); Log.d("harvic", msg); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } @Override protected void onDestroy(){ super.onDestroy(); EventBus.getDefault().unregister(this); } }

好了,到這,基本上算初步把EventBus用起來了,下篇再講講EventBus的幾個函數,及各個函數間是如何識別當前如何調用哪個函數的。

源碼地址:http://download.csdn.net/detail/harvic880925/8111357

轉:http://blog.csdn.net/harvic880925/article/details/40660137


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
66m—66摸成人免费视频| 亚洲人成在线观看网站高清| 日韩中文在线中文网在线观看| 成人免费视频xnxx.com| 欧美精品aaa| 亚洲91精品在线| 亚洲男人第一网站| 亚洲性视频网站| 欧美成人免费大片| 精品成人乱色一区二区| 成人在线一区二区| 91中文精品字幕在线视频| 国产日韩欧美91| 欧美一级片一区| 欧美日韩精品在线观看| 久久精品最新地址| 欧美性在线视频| 国产精品久久久999| 精品国产1区2区| 色噜噜亚洲精品中文字幕| www.久久色.com| 欧美一级淫片丝袜脚交| 久久亚洲一区二区三区四区五区高| 国精产品一区一区三区有限在线| 国产99久久精品一区二区 夜夜躁日日躁| 欧美日韩中国免费专区在线看| 久久亚洲精品一区二区| 亚洲欧洲免费视频| 欧美极品欧美精品欧美视频| 国产精品色悠悠| 欧美亚洲视频在线看网址| 亚洲成人av中文字幕| 日韩精品免费一线在线观看| 国产日本欧美一区| 成人福利网站在线观看| 欧美美女18p| 精品调教chinesegay| 91久久精品国产91性色| 国产日韩在线视频| 热99久久精品| 欧美日韩国产一中文字不卡| 亚洲最新在线视频| 91夜夜揉人人捏人人添红杏| 亚洲第一av网站| 国内精品久久久久影院优| 欧美怡红院视频一区二区三区| 欧美日韩中文字幕综合视频| 91国产美女在线观看| 久久久久久久久久久亚洲| 日本一区二区在线免费播放| 欧美大荫蒂xxx| 久久久女人电视剧免费播放下载| 91情侣偷在线精品国产| 日韩一级裸体免费视频| 中文字幕自拍vr一区二区三区| 欧美日韩在线免费| 5566成人精品视频免费| 国产精品久久久久999| 国产精品第2页| 日韩精品在线视频| 成人黄色免费看| 综合国产在线视频| 日韩精品视频中文在线观看| 黄色精品在线看| 久久精品99久久久久久久久| 92国产精品久久久久首页| 欧美巨猛xxxx猛交黑人97人| 国产中文字幕日韩| 丝袜亚洲另类欧美重口| 国产一区二区三区高清在线观看| 国语自产精品视频在线看抢先版图片| 日韩欧美国产中文字幕| 国产网站欧美日韩免费精品在线观看| 亚洲跨种族黑人xxx| y97精品国产97久久久久久| 日日骚av一区| 九色精品免费永久在线| 91精品国产综合久久香蕉| 永久免费毛片在线播放不卡| 国产精品久久久久久av| 亚洲一级黄色av| 国产精品video| 亚洲精品av在线播放| 日韩av电影在线免费播放| 亚洲色图美腿丝袜| 亚洲欧美日韩第一区| 亚洲自拍偷拍福利| 国产精品吊钟奶在线| 国产人妖伪娘一区91| 国产精品日日摸夜夜添夜夜av| 影音先锋欧美在线资源| 亚洲在线视频观看| 亚洲欧洲免费视频| 91精品啪aⅴ在线观看国产| 亚洲视频视频在线| 久久精品小视频| 欧美性猛交xxxx富婆弯腰| 国产精品久久久久久久电影| 亚洲区一区二区| 日韩欧美精品中文字幕| 狠狠综合久久av一区二区小说| 国产午夜精品全部视频播放| 成人精品在线视频| 日韩视频亚洲视频| 国产精品久久久久久亚洲调教| 日韩在线观看免费高清完整版| 午夜精品久久久久久久男人的天堂| 一区二区三区动漫| 欧美性猛交xxxx免费看久久久| 欧美精品videosex极品1| 国产成人在线亚洲欧美| 538国产精品一区二区免费视频| www.欧美免费| 亚洲国产精品字幕| 69av视频在线播放| 精品国内自产拍在线观看| 欧美激情亚洲激情| 亚洲精品影视在线观看| 欧美在线视频一区| 最近2019中文字幕一页二页| 久久免费高清视频| 亚洲欧洲国产精品| 亚洲人成电影网站| 国产婷婷成人久久av免费高清| 成人国产在线视频| 91视频-88av| 精品中文字幕在线观看| 日韩av电影中文字幕| 久久香蕉国产线看观看av| 欧美猛男性生活免费| 亚洲网址你懂得| 国产在线视频不卡| 在线播放日韩专区| 97久久伊人激情网| 久久天天躁狠狠躁夜夜躁| 精品国产欧美成人夜夜嗨| 亚洲精品永久免费| 国产精品视频一区二区三区四| 欧美大学生性色视频| 亚洲福利在线视频| 91精品国产91久久久久久久久| 欧美在线观看一区二区三区| 亚洲国产天堂网精品网站| 日韩极品精品视频免费观看| 久久亚洲春色中文字幕| 一区二区日韩精品| 欧美有码在线视频| 亚洲午夜色婷婷在线| 亚洲精品成人久久久| 国产精品久久久久久久久久东京| 国产精品视频白浆免费视频| 久久久之久亚州精品露出| 91精品国产综合久久久久久久久| 亚洲国产精品悠悠久久琪琪| 久久天天躁狠狠躁夜夜av| 亚洲人在线观看| 亚洲最大激情中文字幕| 久久国产天堂福利天堂| 国产色婷婷国产综合在线理论片a| 国产在线观看精品| 欧美天堂在线观看| 欧美激情二区三区| 欧洲成人午夜免费大片| 日韩在线视频观看正片免费网站|