利用第三方开源项目 EventBus 进行通信
2015-11-26 14:07
337 查看
第三方的开源库EventBus同样提供了几乎无所不能、易于理解和使用的Android消息事件解决方案。在github上的项目主页地址:https://github.com/greenrobot/EventBus
下面只是一个简单的示例:
layout_main.xml 布局文件
定义一个 UContent 类:
MainActivity.java :
EventService.java 类:
AndroidManifest.xml 中注册:
下面只是一个简单的示例:
layout_main.xml 布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.android.xo.MainActivity" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> <Button android:id="@+id/send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textView" android:text="send"/> </RelativeLayout>
定义一个 UContent 类:
package com.android.xo; public class UContent { public int id; public String content; @Override public String toString() { return content; } }
MainActivity.java :
package com.android.xo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import de.greenrobot.event.EventBus; public class MainActivity extends Activity { TextView textView; Button send; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.textView); send = (Button)findViewById(R.id.send); EventBus.getDefault().register(this); send.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, EventService.class); startService(intent); } }); } // EventBus回调接受消息 public void onEventMainThread(UContent event){ textView.setText(event + ""); } @Override protected void onDestroy() { super.onDestroy(); Intent intent = new Intent(MainActivity.this, EventService.class); stopService(intent); EventBus.getDefault().unregister(this); } }
EventService.java 类:
package com.android.xo; import android.app.Service; import android.content.Intent; import android.os.IBinder; import de.greenrobot.event.EventBus; public class EventService extends Service { public int id = 0; @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { new Thread(){ @Override public void run() { for (int i = 0; i < 10; i++){ UContent event = new UContent(); event.id = id; id ++; event.content = "USB" + event.id; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } EventBus.getDefault().post(event); } }}.start(); return super.onStartCommand(intent, flags, startId); } @Override public IBinder onBind(Intent intent) { return null; } }
AndroidManifest.xml 中注册:
<service android:name=".EventService"></service>
相关文章推荐
- mac下用scp命令实现本地文件与服务器Linux文件之间的相互传输
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
- android权限大全
- java解析XML的三种方法
- Android使用Unicode码对中文进行字母索引的2种方法
- DOS 的历史
- 给UIAlertView添加手势使点击区域外弹框消失
- 关于viewWithTag的使用
- eclipse如何设置成保护眼的背景色
- Android Service的生命周期
- nginx学习1——安装
- 如何规划构建一套大型的Citrix桌面虚拟化架构 - 后记
- LightOJ 1037 Agent 47
- 如何定义和调用扩展方法
- Spring 学习日记 (四) Spring 整合Mybaits 和 struts2 框架的配置文件
- 微软私有云SCCM2012 R2培训
- Android系统主题样式属性
- 三,位操作类指令:包括逻辑运算指令,测试指令和移位指令
- ZeroClipboard跨浏览器复制到剪切板
- div滚动条设置