Android EventBus的初步使用
2017-02-16 17:27
253 查看
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
尝试写了一个小Demo初步使用EventBus。直接上代码:
在 MainActivity 类当中:
package com.szkingdom.android.phone.eventbusdemo;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class MainActivity extends AppCompatActivity {
private Button mBtn;
private TextView mTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注册
EventBus.getDefault().register(this);//订阅
mBtn = (Button) findViewById(R.id.btn);
mTv = (TextView) findViewById(R.id.tv);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this , SecondActivity.class));
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
// 解绑
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
public void onDataSynEvent( MyEventBus event) {
mTv.setText( event.getMessage());
Toast.makeText( this , event.getMessage() , Toast.LENGTH_SHORT).show();
}
}
SecondActiviyt 类:
package com.szkingdom.android.phone.eventbusdemo;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class SecondActivity extends AppCompatActivity {
private Button mBtn;
private TextView mTv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
// 注册
EventBus.getDefault().register(this);
mBtn = (Button) findViewById(R.id.secondBtn);
mTv = (TextView) findViewById(R.id.secondTv);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity( new Intent( SecondActivity.this , ThridActivity.class));
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
public void onDataSynEvent(SecondEventBus event) {
mTv.setText( event.getMessage());
Toast.makeText( this , event.getMessage() , Toast.LENGTH_SHORT).show();
}
}
ThridActiity 类:
package com.szkingdom.android.phone.eventbusdemo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import org.greenrobot.eventbus.EventBus;
/**
* Created by KDS on 2017/2/16.
*/
public class ThridActivity extends AppCompatActivity {
private Button mBtn;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
mBtn = (Button) findViewById(R.id.btn);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println( "send the date over...");
EventBus.getDefault().post( new MyEventBus( "this is the big date ... money 11111111111111111"));
EventBus.getDefault().post( new SecondEventBus( "this is the big date ... money 2222222222222222222"));
ThridActivity.this.finish();
}
});
}
}
MyEventBus 类:
package com.szkingdom.android.phone.eventbusdemo;
/**
* Created by KDS on 2017/2/16.
*/
public class MyEventBus {
private String message ;
public MyEventBus( String message ){
this.message = message;
}
public String getMessage(){
return this.message;
}
}
SecondEventBus类和MyEventBus类类似。
注意在使用的时候需要添加依赖库: compile 'org.greenrobot:eventbus:3.0.0' 才可以是用 EventBus。
并且方法名onDataSynEvent可以随意命名,只要在方法上面添加相关注解就可以了。
可参看博客地址:http://www.cnblogs.com/whoislcj/p/5595714.html
尝试写了一个小Demo初步使用EventBus。直接上代码:
在 MainActivity 类当中:
package com.szkingdom.android.phone.eventbusdemo;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class MainActivity extends AppCompatActivity {
private Button mBtn;
private TextView mTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注册
EventBus.getDefault().register(this);//订阅
mBtn = (Button) findViewById(R.id.btn);
mTv = (TextView) findViewById(R.id.tv);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent( MainActivity.this , SecondActivity.class));
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
// 解绑
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
public void onDataSynEvent( MyEventBus event) {
mTv.setText( event.getMessage());
Toast.makeText( this , event.getMessage() , Toast.LENGTH_SHORT).show();
}
}
SecondActiviyt 类:
package com.szkingdom.android.phone.eventbusdemo;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class SecondActivity extends AppCompatActivity {
private Button mBtn;
private TextView mTv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
// 注册
EventBus.getDefault().register(this);
mBtn = (Button) findViewById(R.id.secondBtn);
mTv = (TextView) findViewById(R.id.secondTv);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity( new Intent( SecondActivity.this , ThridActivity.class));
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行
public void onDataSynEvent(SecondEventBus event) {
mTv.setText( event.getMessage());
Toast.makeText( this , event.getMessage() , Toast.LENGTH_SHORT).show();
}
}
ThridActiity 类:
package com.szkingdom.android.phone.eventbusdemo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import org.greenrobot.eventbus.EventBus;
/**
* Created by KDS on 2017/2/16.
*/
public class ThridActivity extends AppCompatActivity {
private Button mBtn;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
mBtn = (Button) findViewById(R.id.btn);
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println( "send the date over...");
EventBus.getDefault().post( new MyEventBus( "this is the big date ... money 11111111111111111"));
EventBus.getDefault().post( new SecondEventBus( "this is the big date ... money 2222222222222222222"));
ThridActivity.this.finish();
}
});
}
}
MyEventBus 类:
package com.szkingdom.android.phone.eventbusdemo;
/**
* Created by KDS on 2017/2/16.
*/
public class MyEventBus {
private String message ;
public MyEventBus( String message ){
this.message = message;
}
public String getMessage(){
return this.message;
}
}
SecondEventBus类和MyEventBus类类似。
注意在使用的时候需要添加依赖库: compile 'org.greenrobot:eventbus:3.0.0' 才可以是用 EventBus。
并且方法名onDataSynEvent可以随意命名,只要在方法上面添加相关注解就可以了。
可参看博客地址:http://www.cnblogs.com/whoislcj/p/5595714.html
相关文章推荐
- Android EventBus的初步使用
- Android -eventbus的初步使用 和 OnSharedPreferenceChangeListener (SharedPreference内容改变)监听
- Android开发历程_10(LayoutAnimationController的初步使用)
- ArcGIS for Android 之IdentifyTask初步认识和使用
- 使用 android EventBus的一个误区
- 触控鼠标 (使用手机控制电脑,支持IOS,android.OSx 和windows)进入初步推广阶段
- Android_studio IDE使用初步
- Android中Sqlite使用初步
- Android_EventBus的使用和源码分析
- 事件总线EventBus Android开源库的使用
- maven的初步使用--Eclipse android maven的项目创建
- Android学习系列(43)--使用事件总线框架EventBus和Otto
- Android UI初步——level-list的使用
- android调试初步(用eclipse 打断点调试 和使用logcat输出))(转)
- [Android studio] Android studio win 安装于初步使用
- android 开源工具 EventBus的使用和源码分析
- Android 之 重力感应初步使用
- Android menu 使用初步
- Android之使用Ftrace初步分析界面卡顿问题
- EventBus使用详解(一)——初步使用EventBus