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

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

安卓使用EventBus實現消息傳遞

2019-11-09 16:10:40
字體:
來源:轉載
供稿:網友

什么是EventBus

EventBus是一個 發布/訂閱 模式的消息總線庫,它簡化了應用程序內各組件間、組件與后臺線程間的通信,解耦了事件的發送者和接收者,避免了復雜的、易于出錯的依賴及生命周期問題,可以使我們的代碼更加簡潔、健壯。EventBus 用于各組件通信,那么用于 fragment 之間的通信就非常合適了。

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;      }  } 

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的代碼如下:

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();  }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久久中文字幕| 国产欧美中文字幕| 亚洲人在线观看| 欧美一区二区三区四区在线| 亚洲毛片在线看| 亚洲欧洲一区二区三区久久| 日韩中文字幕在线| 欧美日韩亚洲激情| 国产欧美日韩视频| 国产精品7m视频| 亚洲女人天堂色在线7777| 69视频在线播放| 91精品国产自产在线观看永久| 亚洲精品国产精品自产a区红杏吧| 国产日韩欧美中文在线播放| 国内精品伊人久久| 欧美激情第6页| 欧美人与性动交| 欧美激情a∨在线视频播放| 国产精品偷伦一区二区| 久久精品视频在线观看| 日本一区二区三区在线播放| 日韩hd视频在线观看| 亚洲区在线播放| 国产精选久久久久久| 欧美一区二区三区四区在线| 日韩欧美在线观看视频| 亚洲精品91美女久久久久久久| 日本一区二区不卡| 欧美最猛性xxxx| 亚洲成年人在线播放| 久久夜精品va视频免费观看| 日韩av电影院| 在线观看久久久久久| 亚洲毛片在线看| 亚洲成人黄色网址| 最好看的2019年中文视频| 高清欧美性猛交xxxx黑人猛交| 日韩av电影在线免费播放| 成人做爰www免费看视频网站| 国产精品日韩欧美综合| 97国产真实伦对白精彩视频8| 午夜精品在线视频| 午夜精品一区二区三区视频免费看| 91国自产精品中文字幕亚洲| 欧美午夜久久久| 亚洲精品自拍第一页| 久久久精品网站| 中文字幕在线观看亚洲| 精品国产乱码久久久久久天美| 日韩亚洲精品电影| 国产精品亚洲网站| 国产精品第100页| 亚洲欧洲激情在线| 国产欧美日韩中文字幕| 91av免费观看91av精品在线| 91免费精品视频| 国产97在线视频| 亚洲国产天堂久久国产91| 亚洲人成网站777色婷婷| 久久99亚洲热视| 国产丝袜高跟一区| 国产亚洲成av人片在线观看桃| 精品国产乱码久久久久久虫虫漫画| 中文字幕亚洲欧美日韩在线不卡| 高跟丝袜一区二区三区| 国产欧美在线看| 高清欧美性猛交| 国产男女猛烈无遮挡91| 中文字幕在线日韩| 欧美一级片免费在线| 国产va免费精品高清在线观看| 成人国产亚洲精品a区天堂华泰| 成人av在线天堂| 中文字幕亚洲综合久久| 日韩精品一区二区三区第95| 97不卡在线视频| 欧美在线一级va免费观看| 国产欧美日韩视频| 亚洲午夜久久久影院| 欧美精品成人91久久久久久久| 国产亚洲免费的视频看| 国产精品中文久久久久久久| 日韩在线视频线视频免费网站| 欧美色图在线视频| 中文字幕亚洲一区| 2019中文字幕全在线观看| 奇米4444一区二区三区| 一级做a爰片久久毛片美女图片| 欧美专区在线观看| 国产高清视频一区三区| 欧美一区三区三区高中清蜜桃| 国产精品日韩精品| 97超级碰碰人国产在线观看| 久久精品国产欧美亚洲人人爽| 最近的2019中文字幕免费一页| 欧美黑人巨大精品一区二区| 97久久精品人人澡人人爽缅北| 亚洲美女免费精品视频在线观看| 青青在线视频一区二区三区| 亚洲国产另类久久精品| 国产精品白嫩美女在线观看| 欧美激情国产高清| 欲色天天网综合久久| 久久久99久久精品女同性| 中文字幕av日韩| 69视频在线播放| 久久精品视频中文字幕| 97视频在线观看播放| 国产日韩在线看| 777午夜精品福利在线观看| 亚洲免费伊人电影在线观看av| 岛国av一区二区三区| 91热福利电影| 成人妇女免费播放久久久| 亚洲自拍偷拍福利| 中文字幕亚洲综合久久| 日韩在线观看免费全集电视剧网站| 亚洲欧洲xxxx| 欧美性jizz18性欧美| 国产91网红主播在线观看| 亚洲久久久久久久久久| 免费91麻豆精品国产自产在线观看| 亚洲伊人一本大道中文字幕| 欧美激情在线狂野欧美精品| 亚洲第一色中文字幕| 中文字幕av日韩| 日本国产精品视频| 亚洲午夜国产成人av电影男同| 亚洲男女性事视频| 欧美激情区在线播放| 精品免费在线视频| 国产精品美女午夜av| 奇米一区二区三区四区久久| 亚洲欧美日韩中文视频| 国产精品久久久久久久久久久新郎| 日韩亚洲第一页| 国产精品国产福利国产秒拍| 日韩欧美国产激情| 欧美激情精品久久久久久蜜臀| 亚洲欧美日韩国产精品| 色老头一区二区三区| 亚洲一品av免费观看| 成人亚洲欧美一区二区三区| 日韩在线激情视频| 久久精品国产久精国产思思| 亚洲一区二区三区四区在线播放| 91夜夜未满十八勿入爽爽影院| 欧美成人一二三| 国产午夜精品视频免费不卡69堂| 91精品国产99久久久久久| 日本精品一区二区三区在线| 亚洲天堂日韩电影| 欧美一级淫片aaaaaaa视频| 国产精品视频久久| 97国产精品视频人人做人人爱| 久久电影一区二区| 亚洲一区二区黄| 亚洲网站在线看| 亚洲情综合五月天| 欧美成人免费播放| 2019av中文字幕| 成人欧美在线观看| 孩xxxx性bbbb欧美|