zoukankan      html  css  js  c++  java
  • Android学习笔记---初识eventbus

    今天下午没事学习了一下eventbus,写了一个小demo,

    总结出来以下几点:

    ThreadMode.BACKGROUND ==== 如果发生者处于UI线程中,则转到子线程
    ThreadMode.MAIN ==== 始终处于UI线程中


     1 /**
     2  * Created by Administrator on 2017/9/1.
     3  */
     4 
     5 public class MessageEvent {
     6     private String message;
     7     private String name;
     8     private String pass;
     9 
    10     public MessageEvent(String message) {
    11         this.message = message;
    12     }
    13     public MessageEvent(String name,String pass) {
    14         this.name = name;
    15         this.pass = pass;
    16     }
    17 
    18     public String getMessage() {
    19         return message;
    20     }
    21 
    22     public void setMessage(String message) {
    23         this.message = message;
    24     }
    25 
    26 
    27     public String getName() {
    28         return name;
    29     }
    30 
    31     public String getPass() {
    32         return pass;
    33     }
    34 }

    先建立一个消息处理类

    在需要接受消息的Activiy界面写下如此方法

    1   @Subscribe(threadMode = ThreadMode.BACKGROUND)
    2     public void onEvent(MessageEvent event) {
    3         //Log.d("harvic", "OnEvent收到了消息:" + event.getMessage());
    4         Toast.makeText(this, "你登陆成功了吗,就回来="+event.getName()+",==密码="+event.getPass(), Toast.LENGTH_SHORT).show();
    5     }

    发送消息

    1  butt_ond.setOnClickListener(new View.OnClickListener() {
    2             @Override
    3             public void onClick(View view) {
    4                 EventBus.getDefault().post(new MessageEvent("你要传递的数据"));
    5             }
    6         });

    还有一个最重要的地方,不要忘记注册哦

    1     protected void onCreate(Bundle savedInstanceState) {
    2         super.onCreate(savedInstanceState);
    3         setContentView(R.layout.activity_video);
    4         EventBus.getDefault().register(this);
    5 }

    在Activity的onCreate里面注册eventbus,

    这样就完成了在一个页面中传递消息 

    接下来我们将在两个不同的页面发送接收数据,

    在不同的页面传递消息使用

    1 EventBus.getDefault().postSticky(new MessageEvent(userName,userPass));

    接收消息使用

        /**
         * 发生粘性事件
         * @param messageEvent
         */
        @Subscribe(sticky = true)
        public void XXX(MessageEvent messageEvent) {
            Toast.makeText(this, "你登陆成功了吗,就回来="+messageEvent.getName()+",==密码="+messageEvent.getPass(), Toast.LENGTH_SHORT).show();
        }
  • 相关阅读:
    【cocos2d-x + Lua(2) C++和lua数据通讯之间的互调】
    【cocos2d-x + Lua(1) 绑定Lua并使用tolua++】
    【cocos2d-x 手游研发小技巧(6)聊天系统+字体高亮】
    【cocos2d-x 仙凡奇缘-网游研发(2) 角色换线系统】
    【cocos2d-x 仙凡奇缘-网游研发(1) 登录&注册】
    python数据分析---第04章 NumPy基础:数组和矢量计算
    python面向对象(一)
    python 常用模块之random,os,sys 模块
    (python数据分析)第03章 Python的数据结构、函数和文件
    python常用模块之时间模块
  • 原文地址:https://www.cnblogs.com/langfei8818/p/7464295.html
Copyright © 2011-2022 走看看