新框架 之 EventBus
来源:互联网 发布:跨境电商平台数据分析 编辑:程序博客网 时间:2024/04/29 10:22
四大组件之间的通讯,一般靠Intent传递,不过最近又出现了一个方法——EventBus,依靠它也可以完成数据传递。
使用时需要导入jar包,greenrobot:eventbus:3.0.0-beta1
使用时,需要在Activity的onCreate方法里面注册,
EventBus.getDefault().register(this);
在onDestory方法里面取消注册,
EventBus.getDefault().unregister(this);
下面给出一个简单例子,在服务里面开启一个线程,然后向MainActivity发送消息,并设置到Button上。
package com.example.immediate.myeventbus;import android.content.Intent;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import de.greenrobot.event.EventBus;import de.greenrobot.event.Subscribe;import de.greenrobot.event.ThreadMode;public class MainActivity extends AppCompatActivity { private Button mButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EventBus.getDefault().register(this); mButton = (Button) findViewById(R.id.button_service); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,MyService.class); startService(intent); } }); } //在注册了的Activity中,声明处理事件的方法 @Subscribe(threadMode = ThreadMode.MainThread) //在ui线程执行 public void onUserEvent(MyMessage event) { Log.d("onUserEvent",""+event); mButton.setText(event.getNumber()); } @Override protected void onDestroy() { EventBus.getDefault().unregister(this); super.onDestroy(); }}
线程是耗时操作,放在Service里面
package com.example.immediate.myeventbus;import android.app.Service;import android.content.Intent;import android.os.IBinder;import de.greenrobot.event.EventBus;/** * Created by Administrator on 2015/11/3. */public class MyService extends Service{ private int count = 0; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { new Thread(new Runnable() { @Override public void run() { while (true){ count++; MyMessage msg = new MyMessage(); msg.setNumber("计时"+count); EventBus.getDefault().post(msg); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); }}
只是一个存放字符串数据的类,作用相当于一个集合
package com.example.immediate.myeventbus;/** * Created by Administrator on 2015/11/3. */public class MyMessage { private String number; public String getNumber() { return number; } public void setNumber(String number) { this.number = number; }}
0 0
- 新框架 之 EventBus
- Android自助餐之EventBus框架
- Android 框架之EventBus(一)
- EventBus框架总结之用法
- Android 效率开发之EventBus新使用方法
- android开源框架之EventBus
- Android框架之EventBus的简单使用
- Android框架之EventBus的使用
- EventBus框架总结之源码分析
- 软件框架之EventBus的使用
- EventBus框架
- 框架eventbus
- EventBus3.0新特性之 Subscriber Index ,加速 EventBus
- 新框架之SAP
- Android开源通信框架之——EventBus
- Android事件总线框架之EventBus(3.0为例)
- Android EventBus框架(一)之使用详细介绍
- Android EventBus框架(二)之源码简单解析
- google论文mapreduce
- 程序包javax.servlet与javax.servlet.http不存在
- iOS开发16-iOS NSTimer的使用
- Android开发&短信拦截与读取,消息通知Notification
- Android应用开发判断一个Activity是否正在运行
- 新框架 之 EventBus
- noip 11.3~11.4模拟总结
- Oracle数据库安装图解
- 7.1面向对象概述
- iOS开发17-iOS 模态视图的使用
- 项目注释模板
- LightOJ - 1026 Critical Links(桥)
- Git学习(一) 版本管理工具
- iOS控件学习笔记(UIView、UIViewController)