1. 程式人生 > >EventBus傳送黏性事件到接收頁面

EventBus傳送黏性事件到接收頁面

例:

                                    

建立Module,關聯EventBus框架,建立第2個Activity

    完成Module的佈局及控制元件的初始化

    建立EventBus訊息類,設定屬性

    使用EventBus的postSticky方法傳送黏性事件

    根據訊息類,接收黏性事件(注意:註解要新增sticky = true)

    註冊EventBus,解除EventBus黏性事件及註冊

加依賴:

dependencies {compile 'org.greenrobot:eventbus:3.0.0'}

加許可權:

MainActivity 主要:

/**
 * 建立Module,關聯EventBus框架,建立第2Activity
完成Module的佈局及控制元件的初始化
    建立EventBus訊息類,設定屬性
    使用EventBuspostSticky方法傳送黏性事件
    根據訊息類,接收黏性事件(注意:註解要新增sticky = true)
註冊EventBus,解除EventBus黏性事件及註冊
*/
public class MainActivity extends AppCompatActivity {

    public String mag="鍵盤敲爛,月薪過萬!!!66666";

    @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //傳送黏性事件到接收頁面,注意關鍵點,通訊 public void send(View view){ //傳送黏性事件 EventBus.getDefault().postSticky(new EventBusStickyMessage(mag)); //跳轉到接收的
ActivitystartActivity(new Intent(this,EventBusReceiveActivity.class)); } }

activity_main  佈局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

    <Button
android:onClick="send"
android:text="向主頁面使用EventBus傳送一個事件"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</RelativeLayout>

EventBusStickyMessage  建立EventBus訊息類,設定屬性

/**
 * 訊息類,一個容器,負責存放一些資料,方便我們傳到另一個地方,獲取資訊
 */

public class EventBusStickyMessage {
    public String message;
    public EventBusStickyMessage(String message) {
        this.message = message;
    }
}

EventBusReceiveActivity 接收黏性事件

public class EventBusReceiveActivity extends AppCompatActivity implements View.OnClickListener {
    private Button button;
    private TextView tv_title;
    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_event_bus_receive);
        initView();
    }

    @Override
public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button:
                if(!EventBus.getDefault().isRegistered(this)){//加上判斷
EventBus.getDefault().register(this);
                }
                break;
        }
    }

    //1.接收黏性事件,多了個屬性sticky,改為true方式啟動黏性事件
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
    public void EventBusSticky(EventBusStickyMessage eventBusStickyMessage){
        tv_title.setText(eventBusStickyMessage.message);
    }

    //優化資源,記憶體溢位,AIDL
@Override
protected void onDestroy() {
        super.onDestroy();
        //移除所有的黏性事件
EventBus.getDefault().removeAllStickyEvents();
        //避免記憶體洩漏,防止OOM,優化記憶體
EventBus.getDefault().unregister(this);
    }

    private void initView() {
        button = (Button) findViewById(R.id.button);
        tv_title = (TextView) findViewById(R.id.tv_title);

        button.setOnClickListener(this);
    }
}

activity_event_bus_receive  佈局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
    <Button
android:id="@+id/button"
android:text="接收事件"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
    <TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginTop="35dp"/>
</RelativeLayout>

相關推薦

EventBus傳送黏性事件接收頁面

例:                                    建立Module,關聯EventBus框架,建立第2個Activity    完成Module的佈局及控制元件的初始化    建立EventBus訊息類,設定屬性    使用EventBus的post

使用EventBus黏性事件遇到的一些問題,跟大家分享以下

    最近在做專案需求的時候,有一個功能是訊息箱,其中有一個是這樣的需求,大概描述如下:    比如app接收到某三方推送後要在相應的介面上做出修改UI的動作,問題來了;這些介面有可能是當前介面或者還未啟動的介面,然後最近在看EventBus的資料,就想起使用EventBu

AngularJs-destroy事件頁面離開事件

userinfo telephone on() function 監聽 user detail ddr troy AngularJs-destroy事件 $scope.$on("$destroy", function() { //清除配置,不

分析js操作動態獲取屏高並觸發按鈕點擊事件回到頁面窗口的頂部

回到頂部 fixed pla bottom 拖動 position scrollto nload doc <!DOCTYPE html><html lang="en"><head>   <meta charset="UTF-8"&g

from表單實現無跳轉上傳文件,接收頁面後臺數據

spl white lis not left alt tro pos ftp   實現無跳轉發送表單數據、文件,並能接收後臺返回的數據。   主要技術要點:   1、form表單添加target屬性,指定一個iframme的name;form表單提交後在iframe內嵌窗口

vue實戰之狗血事件頁面loading效果詭異之事

after 不變 編譯 全局 before 組件 定時器 route vuex 接上回 想加一個切換路由時,跳出一個loading動畫 ,路由加載後就消失 先做了一個loading提示的浮動層的組件,全局註冊,在幾個路由頁面都引入 在vuex裏面維護一個變量比如isLoad

SpringMVC 接收頁面Post提交的json字串並解析

son 使用的是ali的fastjson; 頁面提交的是json字串,後臺使用@RequestBody String param接收資料,通過json解析param;   頁面: <%@ page language="java" contentType="text/h

robotframework 學習(2) :使用RIDE進行介面測試之傳送請求和接收資料斷言

一、RIDE的介紹:         RIDE是robotframework圖形操作前端,也可以理解為一種編輯器,它以cell的形式來進行定義資料和方法,返回結果等,我們可以使用它進行建立測試用例和編寫測試指令碼,並且執行自動化測試。  

HTML5事件—visibilitychange 頁面可見性改變事件

又看到一個很有意思的HTML5事件   visibilitychange事件是瀏覽器新新增的一個事件,當瀏覽器的某個標籤頁切換到後臺,或從後臺切換到前臺時就會觸發該訊息,現在主流的瀏覽器都支援該訊息了,例如Chrome, Firefox, IE10等。雖然這只是一個簡單的功能,但是

前端(十五)—— JavaScript事件:繫結事件方式、事件的冒泡和預設事件、滑鼠事件、鍵盤事件、表單 事件、文件事件、圖片事件頁面事件

JS事件:繫結事件方式、事件的冒泡和預設事件、滑鼠事件、鍵盤事件、表單 事件、文件事件、圖片事件、頁面事件 一、事件的兩種繫結方式 ******* 1、on事件繫結方式 document.onclick = function() { console.log("文件點選"); } // on事件只

JS - 事件 and 頁面操作

目錄 一、事件初級 使用 HTML DOM 來分配事件 例項 二、JS選擇器 1、getElement系列 2、querySelect系列 3、id名 三、JS操作頁面內容 四、JS操作頁面樣式 style屬性樣式 (讀寫)

Larval中js怎麼傳送資料到其他頁面

js程式碼 $(function(){ $(".add").on(‘click’,function(){ var tid= $(this).attr(‘tid’); location.href = ‘{{url(“products/products_add?tid=”)}}’+tid; })

onbeforeunload事件頁面關閉或重新整理時觸發

onbeforeunload 事件在即將離開當前頁面(重新整理或關閉)時觸發。 該事件可用於彈出對話方塊,提示使用者是繼續瀏覽頁面還是離開當前頁面。 對話方塊預設的提示資訊根據不同的瀏覽器有所不同,標準的資訊類似 "確定要離開此頁嗎?"。該資訊不能刪除。 有的網站解釋是可以自定義一些提示

spring controller介面中,用pojo物件接收頁面傳遞的引數,發現spring在對pojo物件賦值時,有一定順序的問題

1、我的專案中的實體類都繼承了基類entityBase,裡面封裝了分頁的一些屬性,pageindex、pagesize、pagerownum等。 2、思路是頁面可以靈活的傳遞分頁引數,比如當前頁pageindex=1、每頁總數pagesize=6等靈活請求資料。然後可以根據當前頁pageindex的賦值,來

spring controller接口中,用pojo對象接收頁面傳遞的參數,發現spring在對pojo對象賦值時,有一定順序的問題

根據 自動 nbsp pojo spring ron 接口 () size 1、我的項目中的實體類都繼承了基類entityBase,裏面封裝了分頁的一些屬性,pageindex、pagesize、pagerownum等。 2、思路是頁面可以靈活的傳遞分頁參數,比如當前頁pa

java 串列埠除錯 感測器指令傳送與資料接收

    本文主要講述串列埠除錯的Java工具類,並實現迴圈傳送指令,接收資料!!     本文主要實現的功能是呼叫工具類中開啟串列埠方法,連線感測器所在串列埠,向串列埠(感測器)傳送指令,並接收串列埠(感測器)資料。 主函式-----main(): public sta

js閉包 選擇器 面向物件 事件 操作頁面

閉包js函式的巢狀定義,定義在內部的函式 就稱之為閉包為什麼使用閉包: 1.一個函式要使用另一個函式的區域性變數 2.閉包會持久化包裹自身的函式的區域性變數 3.解決迴圈繫結 function outer() { var num =10; function

js閉包 選擇器 面向對象 事件 操作頁面

his 就是 sele 處理 學習 per 點擊事件 駝峰命名 css 閉包js函數的嵌套定義,定義在內部的函數 就稱之為閉包為什麽使用閉包: 1.一個函數要使用另一個函數的局部變量 2.閉包會持久化包裹自身的函數的局部變量 3.解決循環綁定 fun

JAVA學習---QQ傳送郵件與接收

QQ郵箱的設定 PS:菜鳥一個,只是為了防止犯下同一個錯誤,所以,寫了這個部落格,歡迎大家多提意見,雖然我不一定會聽,但我一定認真考慮。 第一步:QQ郵箱的設定 話不多說,直接配置: 登入QQ郵箱後,進入設定頁面, 在最上面一行, 賬戶選單下,最下邊有四個

Go語言(伺服器開發):客戶端向伺服器傳送資料並接收返回資料

客戶端向伺服器傳送資料並接收返回資料。 示例程式碼: package mysocket import ( "fmt" "io" "net" ) func MySocketBase() { var ( host = "www.apache.org" p