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();
        }
  • 相关阅读:
    jQuery Deferred和Promise的使用介绍:
    asp.net客户端IP跟踪
    jquery常用的一些方法
    前端音频流播放
    c# Http请求下载二进制流文件
    iView表格行验证问题
    【已解决】Https请求—未能创建 SSL/TLS 安全通道
    安全开发规范
    数据库设计规范
    高性能开发规范
  • 原文地址:https://www.cnblogs.com/langfei8818/p/7464295.html
Copyright © 2011-2022 走看看