EventBus 事件学习和学习
来源:互联网 发布:cats dogs 数据集 编辑:程序博客网 时间:2024/06/15 20:25
1.对于粘滞事件,产生后一直存在,可以反复接收,EventBus.getDefault().registerSticky会触发接收之前已经产生的粘滞事件,并且执行事件函数
若EventBus.getDefault().registerSticky执行时并没有可以接收的粘滞事件,不会执行事件函数的哦
2.onEventMainThread(SecondEvent event) {
注意这里的的参数类型决定了EventBus.getDefault().post出来的事件是否会通知这个事件函数(当时就执行哦)
参考:http://blog.csdn.net/harvic880925/article/details/40787203(分上下两篇博客)
若EventBus.getDefault().registerSticky执行时并没有可以接收的粘滞事件,不会执行事件函数的哦
2.onEventMainThread(SecondEvent event) {
注意这里的的参数类型决定了EventBus.getDefault().post出来的事件是否会通知这个事件函数(当时就执行哦)
package com.example.administrator.studyeventbus01;import android.app.Activity;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import de.greenrobot.event.EventBus;/** * 我向MainActivity里面注册事件可以理解为向EventBus表示我是事件的观察者 * 我向MainActivity里面反注册事件可以理解为向EeentBus表示我不再是事件的观察者 */public class MainActivity extends Activity { Button btn; TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册EventBus // EventBus.getDefault().register(this); EventBus.getDefault().registerSticky(this); btn = (Button) findViewById(R.id.btn_try); tv = (TextView)findViewById(R.id.tv); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), SecondActivity.class); startActivity(intent); } }); } @Override protected void onDestroy(){ super.onDestroy(); EventBus.getDefault().unregister(this);//反注册EventBus } public void onEvent(SecondEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); Log.d("harvic", msg); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } /** * onEventMainThread是本我这个事件观察者接受事件消息并且只在UI线程执行的 * * 通过EventBus.getDefault().post(new FirstEvent("FirstEvent btn clicked"));方法调用之后 * 可以及时调用到onEventMainThread,不需要等等回到这个页面才调用哦 * 参考地址:http://blog.csdn.net/harvic880925/article/details/40660137 * @param event */ public void onEventMainThread(SecondEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); Log.d("harvic", msg); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } /* public void onEventBackground(FirstEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); Log.d("harvic", msg); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } public void onEventAsync(FirstEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); Log.d("harvic", msg); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); }*/}
package com.example.administrator.studyeventbus01;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import de.greenrobot.event.EventBus;public class SecondActivity extends Activity { private Button btn_FirstEvent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); btn_FirstEvent = (Button) findViewById(R.id.btn_first_event); btn_FirstEvent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // EventBus.getDefault().post(new FirstEvent("FirstEvent btn clicked")); EventBus.getDefault().postSticky(new FirstEvent("FirstEvent btn clicked")); } }); btn_FirstEvent.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { Intent intent = new Intent(getApplicationContext(), ThirdActivity.class); startActivity(intent); return false; } }); }}
package com.example.administrator.studyeventbus01;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import de.greenrobot.event.EventBus;/** * 我向MainActivity里面注册事件可以理解为向EventBus表示我是事件的观察者 * 我向MainActivity里面反注册事件可以理解为向EeentBus表示我不再是事件的观察者 */public class ThirdActivity extends Activity { Button btn; TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册EventBus // EventBus.getDefault().register(this); // EventBus.getDefault().registerSticky(this);<strong><span style="color:#FF0000;">//这个位置不行,这里执行后直接执行那个事件方法时,控件还没有初始化呢</span></strong> btn = (Button) findViewById(R.id.btn_try); tv = (TextView)findViewById(R.id.tv); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), SecondActivity.class); startActivity(intent); } }); EventBus.getDefault().registerSticky(this); /<strong><span style="color:#FF0000;">/现在的位置是合适的,粘滞事件可以反复接收到,但是如果执行这句话的时候没有事件通知,则不执行事件函数</span></strong> } @Override protected void onDestroy(){ super.onDestroy(); EventBus.getDefault().unregister(this);//反注册EventBus } /* public void onEvent(FirstEvent event) { String msg = "onEventMainThread收到了消息11:" + event.getMsg(); Log.d("harvic", msg); tv.setText(msg); btn.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); }*/ public void onEventMainThread(FirstEvent event) { String msg = "onEventMainThread收到了消息111:" + event.getMsg(); Log.d("harvic", msg); String aa = btn.getText().toString(); btn.setText("123456"); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } /* public void onEventBackground(FirstEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); Log.d("harvic", msg); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } public void onEventAsync(FirstEvent event) { String msg = "onEventMainThread收到了消息:" + event.getMsg(); Log.d("harvic", msg); tv.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); }*/}
参考:http://blog.csdn.net/harvic880925/article/details/40787203(分上下两篇博客)
0 0
- EventBus 事件学习和学习
- EventBus事件总线学习
- 事件总线框架EventBus和Otto学习笔记
- EventBus的使用和学习
- EventBus学习
- EventBus学习
- EventBus 学习
- eventBus学习
- EventBus学习
- EventBus学习
- Android学习系列(43)--使用事件总线框架EventBus和Otto
- Guava库学习:学习Guava EventBus(二)EventBus 事件订阅
- EventBus学习笔记-什么是EventBus
- Guava学习笔记:EventBus
- Guava学习笔记:EventBus
- Guava学习笔记:EventBus
- Android EventBus学习总结
- EventBus 学习资源
- 常见管理工具
- CodeForcesGym 100729C Movie collection
- iptables深入解析-filter应用篇
- virtualbox中配置CentOS的本地磁盘镜像作为其软件源
- - (void)insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes使用方法
- EventBus 事件学习和学习
- iOS开发-项目中经常的问题
- CentOS安装第三方源(EPEL,RPMForge,RPMFusion)
- 汇编语言-汇编程序初识
- 文件写入
- ios开发-UIImageView的使用,点击图片刷新对应数据的过程
- MySQL 数据库的备份和恢复
- HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)
- 分布式一致性协议paxos