otto框架简单的使用(个人笔记)
来源:互联网 发布:相貌评分软件 编辑:程序博客网 时间:2024/06/08 17:15
转:http://android.jobbole.com/82217/
1、Activity与Activity间的传值是通过Intent
,值回调是通过startActivityForResult()
2、Activity与Fragment间的传值是通过setArguments
,值回调是通过实现onAttach()
的Interface方式
3、而Fragment与Fragment间的交互则应该是通过它们关联的Activity作为中间键来交互
4、包括Activity与Service的交互,可能众多同学会采用Binder机制来处理,而其实Binder机制本质也是通过接口回调方式来进行值回调的
5、或者在更复杂的应用场景下,比如:ActivityA跳转到ActivityB,ActivityB跳转到ActivityC,此时需要从ActivityC中获取到用户的操作数据返回到ActivityA和ActivityB中显示,或者在Activity中有多个Fragment,其中一个Fragment里的数据变化需要同步更新其它Fragment的数据变化,这时候如果使用Interface的方式进行它们间的交互则比较复杂,耦合度也高 所以,针对上面这些问题,大多数在处理值交互的问题上类之间都是耦合在一起的,而Otto事件总线框架就是降低各个类间的耦合度的。(方便解决Activity与Activity,Fragment,Service数据的传递与交互中所遇到的复杂问题)
使用otto框架要添加依赖
compile 'com.squareup:otto:1.3.8'
建立个实体类用来传递各数据(这里只传String)public class BusData { public String messege; public BusData(String messege) { this.messege = messege; } public String getMessege() { return messege; } public void setMessege(String messege) { this.messege = messege; }}创建个 单例对象public class OttoBus extends Bus { private volatile static OttoBus bus; public OttoBus() { } public static OttoBus getInstance(){ if (bus==null){ synchronized (OttoBus.class){ if (bus==null){ bus =new OttoBus(); } } } return bus; }}MainActivity 类:public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button mBt_jump; private TextView mTv_messge; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); OttoBus.getInstance().register(this);//注册订阅事件 mBt_jump = (Button) findViewById(R.id.bt_jump); mTv_messge=(TextView) findViewById(R.id.tv_messge); mBt_jump.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.bt_jump: Intent intent=new Intent(MainActivity.this,ThereActivity.class); startActivity(intent); break; } } @Override protected void onDestroy() { super.onDestroy(); OttoBus.getInstance().unregister(this);//取消订阅事件 } @Subscribe //接收处理事件 public void setContent(BusData data){ Log.i("BusData","BusData==="+data.getMessege()); mTv_messge.setText(data.getMessege()); }}跳转ThereActivity类
public class ThereActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.thereactivity); findViewById(R.id.bt_back).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { OttoBus.getInstance().post(new BusData("数据送出在第一页接收到"));//发出信息数据 finish(); } }); }}
阅读全文
0 0
- otto框架简单的使用(个人笔记)
- Otto框架的使用
- Otto事件总线框架的使用(一)
- Otto事件总线框架的使用
- OTTO框架使用介绍。
- Otto简单使用
- Android Otto 的使用
- Otto的使用
- Otto的封装使用
- Otto的使用
- android中Otto事件总线框架的使用
- maven的简单使用<个人笔记>
- 使用事件总线框架EventBus和Otto
- 使用事件总线框架EventBus和Otto
- Android事件总线框架Otto使用
- 使用事件总线框架EventBus和Otto
- Android事件总线 Otto框架使用
- Android otto 事件总线的使用(使用场景)
- “玲珑杯”ACM比赛 Round #22 E【贪心】
- Java之Lists.Partition项目中的使用
- 【数位dp】B-number
- SpringMVC_统一异常处理
- 图像识别与处理之Opencv——像素值的读写
- otto框架简单的使用(个人笔记)
- 百度云视频CDN面试总结
- vb记录
- ACL 2017 accepted papers
- nginx
- 实验5:树和二叉树
- 程序员加班在路上
- 基于JSoup的网络爬虫爬取小说内容
- Kotlin——函数