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

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

初步使用EventBus (一)

2019-11-09 14:36:56
字體:
來源:轉載
供稿:網友

本文轉載自http://blog.csdn.net/harvic880925/article/details/40660137 一、概述 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的代碼如下:

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非常簡單的用起來了!s


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久视频在线播放| 日韩欧美亚洲综合| 国产精品免费久久久久影院| 国产一区二区三区视频| 久久精品视频在线| 国内伊人久久久久久网站视频| 亚洲精品久久久久久久久久久久久| 欧美高清第一页| 成人精品在线视频| 国产在线一区二区三区| 一区二区三区精品99久久| 亚洲一级黄色av| 国产一区玩具在线观看| 最近2019中文字幕mv免费看| 日韩高清欧美高清| 国产日韩在线亚洲字幕中文| 国产精品国产福利国产秒拍| 色婷婷久久一区二区| 日韩精品在线免费观看| 色妞在线综合亚洲欧美| 久久精品国产亚洲| 久久亚洲精品国产亚洲老地址| 欧美放荡办公室videos4k| 91精品久久久久久久久青青| 日韩精品极品在线观看| 日韩av网站大全| 亚洲福利在线看| 91免费版网站入口| 91久久精品国产| 日韩在线观看你懂的| 一本色道久久88综合日韩精品| 精品久久久久久久久久久久| 国产xxx69麻豆国语对白| 亚洲精选中文字幕| 黑人极品videos精品欧美裸| 在线观看国产精品淫| 欧美壮男野外gaytube| 日本国产一区二区三区| 亚洲黄色www网站| 国产在线播放不卡| 国产精品久久久久久久久久久久| 欧美一区二区三区免费视| 国产精品xxxxx| 国产成人精品久久二区二区| 亚洲美女性生活视频| 欧美日韩国产在线播放| 成人国内精品久久久久一区| 欧美风情在线观看| 91精品国产综合久久香蕉922| 亚洲精品中文字幕av| 亚洲人成电影网站色xx| 欧美激情在线狂野欧美精品| 亚洲自拍中文字幕| 国产97色在线| 91九色视频在线| 国产精品久久久久久久久久ktv| 亚洲性生活视频| 国产mv免费观看入口亚洲| 日日狠狠久久偷偷四色综合免费| 九九久久精品一区| 色999日韩欧美国产| 国产激情综合五月久久| 亚洲最新中文字幕| 性视频1819p久久| 国内精品久久久久久影视8| 日韩av三级在线观看| 国产主播在线一区| 国产精品视频网| 国产手机视频精品| 欧美电影在线播放| 亚洲一级黄色片| 国产精品久久久久久久久久小说| 日韩av在线免费看| 精品久久久久久亚洲国产300| 欧美影院在线播放| 国产成人久久精品| 97av在线播放| 日本高清视频一区| 在线观看欧美视频| 亚洲人成在线电影| 黑人狂躁日本妞一区二区三区| 欧美中文字幕精品| 国产中文日韩欧美| 久久精品99久久久香蕉| 欧美大胆在线视频| 亚洲性视频网址| 国产精品igao视频| 亚洲精选一区二区| 国产成人拍精品视频午夜网站| 久久精品成人欧美大片古装| 欧美日本高清视频| 成人黄色av免费在线观看| 国产视频精品自拍| 国产精品男女猛烈高潮激情| 国产精品日韩欧美综合| 国产欧美精品在线播放| 亚洲热线99精品视频| 亚洲激情中文字幕| 亚洲成人在线视频播放| 俺去亚洲欧洲欧美日韩| 亚洲的天堂在线中文字幕| 国产一区私人高清影院| 日韩精品视频在线观看网址| 久热精品视频在线观看| 欧美肥臀大乳一区二区免费视频| 一区二区亚洲精品国产| 欧美制服第一页| 亚洲无线码在线一区观看| 亚洲精品国精品久久99热一| 久久精彩免费视频| 日韩中文字幕在线免费观看| 精品综合久久久久久97| 精品福利樱桃av导航| 欧美性视频网站| 国产精品88a∨| 中文字幕欧美精品日韩中文字幕| 国产精品一二区| 91精品免费久久久久久久久| 国产欧美日韩亚洲精品| 国产精品久久久久久搜索| 欧美多人乱p欧美4p久久| 国产日韩欧美电影在线观看| 久久亚洲精品毛片| 91在线观看免费高清| 亚洲香蕉成人av网站在线观看| 色多多国产成人永久免费网站| 欧美国产在线视频| 欧美亚洲国产成人精品| 亚洲欧美一区二区三区情侣bbw| 欧美成人午夜免费视在线看片| 欧美精品在线免费观看| 久久91精品国产91久久久| xxxx欧美18另类的高清| 国产精品久久久久久久久免费| 色悠悠国产精品| 欧美亚洲一级片| 国产三级精品网站| 欧美黑人一级爽快片淫片高清| 91九色视频导航| 精品久久久在线观看| 欧美电影免费观看高清| 国产精品久久久久久久久久新婚| 亚洲欧美在线免费| 亚洲欧美中文日韩在线v日本| 欧美日韩免费一区| 日韩国产高清污视频在线观看| 一区二区在线视频播放| 欧美洲成人男女午夜视频| 久热精品视频在线观看一区| 国产亚洲精品成人av久久ww| 亚洲国产精品福利| zzijzzij亚洲日本成熟少妇| 欧美亚洲另类视频| 久久免费高清视频| 午夜精品久久久久久久久久久久久| 91精品国产高清自在线看超| 亚洲人a成www在线影院| 国产精品极品美女粉嫩高清在线| 97超碰蝌蚪网人人做人人爽| 亚洲精品视频在线播放| 日韩在线视频导航| 亚洲精品网站在线播放gif| 日韩高清av在线| 欧美性资源免费|