精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

Android之利用EventBus發(fā)送消息傳遞示例

一、概述

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁(yè)制作,對(duì)資質(zhì)代辦等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)seo優(yōu)化排名優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

EventBus是一款針對(duì)Android優(yōu)化的發(fā)布/訂閱事件總線。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,線程之間傳遞消息.優(yōu)點(diǎn)是開(kāi)銷小,代碼更優(yōu)雅。以及將發(fā)送者和接收者解耦。

1、下載EventBus的類庫(kù)

源碼:EventBus_jb51.rar

2、基本使用

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

public class AnyEventType { 
  public AnyEventType(){} 
 } 

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

eventBus.register(this); 

(3)發(fā)送消息

eventBus.post(new AnyEventType event); 

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

public void onEvent(AnyEventType event) {} 

 (5)解除注冊(cè)

eventBus.unregister(this); 

順序就是這么個(gè)順序,可真正讓自己寫(xiě),估計(jì)還是云里霧里的,下面舉個(gè)例子來(lái)說(shuō)明下。

首先,在EventBus中,獲取實(shí)例的方法一般是采用EventBus.getInstance()來(lái)獲取默認(rèn)的EventBus實(shí)例,當(dāng)然你也可以new一個(gè)又一個(gè),個(gè)人感覺(jué)還是用默認(rèn)的比較好,以防出錯(cuò)。

二、實(shí)戰(zhàn)

先給大家看個(gè)例子:

當(dāng)擊btn_try按鈕的時(shí)候,跳到第二個(gè)Activity,當(dāng)點(diǎn)擊第二個(gè)activity上面的First Event按鈕的時(shí)候向第一個(gè)Activity發(fā)送消息,當(dāng)?shù)谝粋€(gè)Activity收到消息后,一方面將消息Toast顯示,一方面放入textView中顯示。

Android之利用EventBus發(fā)送消息傳遞示例

按照下面的步驟,下面來(lái)建這個(gè)工程:

1、基本框架搭建

想必大家從一個(gè)Activity跳轉(zhuǎn)到第二個(gè)Activity的程序應(yīng)該都會(huì)寫(xiě),這里先稍稍把兩個(gè)Activity跳轉(zhuǎn)的代碼建起來(lái)。后面再添加EventBus相關(guān)的玩意。

MainActivity布局(activity_main.xml)

 
  
 

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

 
 
 

MainActivity.java (點(diǎn)擊btn跳轉(zhuǎn)到第二個(gè)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); 
   } 
  }); 
 } 
 
} 

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

2、新建一個(gè)類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; 
 } 
} 

這個(gè)類很簡(jiǎn)單,構(gòu)造時(shí)傳進(jìn)去一個(gè)字符串,然后可以通過(guò)getMsg()獲取出來(lái)。

3、在要接收消息的頁(yè)面注冊(cè)EventBus:

在上面的GIF圖片的演示中,大家也可以看到,我們是要在MainActivity中接收發(fā)過(guò)來(lái)的消息的,所以我們?cè)贛ainActivity中注冊(cè)消息。

通過(guò)我們會(huì)在OnCreate()函數(shù)中注冊(cè)EventBus,在OnDestroy()函數(shù)中反注冊(cè)。所以整體的注冊(cè)與反注冊(cè)的代碼如下:

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); 
    //注冊(cè)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);//反注冊(cè)EventBus 
 } 
} 

4、發(fā)送消息

發(fā)送消息是使用EventBus中的Post方法來(lái)實(shí)現(xiàn)發(fā)送的,發(fā)送過(guò)去的是我們新建的類的實(shí)例!

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、接收消息

接收消息時(shí),我們使用EventBus中最常用的onEventMainThread()函數(shù)來(lái)接收消息,具體為什么用這個(gè),我們下篇再講,這里先給大家一個(gè)初步認(rèn)識(shí),要先能把EventBus用起來(lái)先。

在MainActivity中重寫(xiě)onEventMainThread(FirstEvent event),參數(shù)就是我們自己定義的類:

在收到Event實(shí)例后,我們將其中攜帶的消息取出,一方面Toast出去,一方面?zhèn)鞯絋extView中;

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用起來(lái)了,下篇再講講EventBus的幾個(gè)函數(shù),及各個(gè)函數(shù)間是如何識(shí)別當(dāng)前如何調(diào)用哪個(gè)函數(shù)的。

源碼地址:EventBus_jb51.rar

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


當(dāng)前文章:Android之利用EventBus發(fā)送消息傳遞示例
當(dāng)前地址:http://m.jcarcd.cn/article/giigoj.html
主站蜘蛛池模板: 午夜福利写真在线 | 成人午夜激情影院 | 精品国产午夜大片 | 精品一精品国产一级 | 日本精品影视国产 | 精品a在线观看 | 国产午夜网站 | 欧美亚洲日韩国产网 | 欧美性爱免费网站 | 乱仑图片 | 97精品久 | 国产亚洲精品无 | 日韩超燃电影院免 | 国产精品偷伦费观看 | 青苹果影院 | 不卡中文字幕 | 国产情侣自拍网站 | 日本精品在线网址 | 国产精品一区12p | 国产在线成人 | 69精品人人槡| 国产中文字幕在线 | 日韩一二三区 | 国产欧美精品区一 | 国内精品视频在线 | 日本精品成 | 亚洲无码精品二 | 欧美日韩日处女黑人 | 国产日韩对 | 国内自产 | 92午夜福利手 | 日韩激情不卡一 | 国产精品综合亚洲 | 午夜性爱视频免费 | 青草青草久 | 日韩精品在线电影 | 日韩看羞羞在线播放 | 国产情侣91在 | 国产亚洲老熟女视频 | 日产2025免费一 | 日韩成人午夜福利 |