当前位置: 首页 > news >正文

做网站应该用什么数据库百度热搜大数据

做网站应该用什么数据库,百度热搜大数据,东莞网站开发培训哪里有,如何申请深圳设计公司网站本文主要翻译自: https://github.com/greenrobot/EventBus/blob/master/HOWTO.md 1. 功能介绍 1.1. EventBus EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递。 1.2 主要对象 事件 (Event) 发布者 (Subscr…

本文主要翻译自:
https://github.com/greenrobot/EventBus/blob/master/HOWTO.md

1. 功能介绍

1.1. EventBus

EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递。

1.2 主要对象

事件 (Event)
发布者 (Subscriber)
订阅者 (Publisher)


2. 流程图


流程图

3. 类图


类图

4. 使用方法

4.1 使用EventBus三步

定义事件:

public class MessageEvent {public final String message;public MessageEvent(String message) {this.message = message;}
}

订阅者注册事件

@Override
public void onStart() {super.onStart();EventBus.getDefault().register(this);
}@Override
public void onStop() {EventBus.getDefault().unregister(this);super.onStop();
}// This method will be called when a MessageEvent is posted
public void onEvent(MessageEvent event){Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}// This method will be called when a SomeOtherEvent is posted
public void onEvent(SomeOtherEvent event){doSomethingWith(event);
}

发布事件

EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

4.2 交付线程和ThreadModes

事件可以在不同的线程之间传递
ThreadMode:

  • PostThread
    这是默认的模式,订阅者会在发布者所在的线程中调用。这种模式开销最小,避免了线程之间的切换。所以完成时间很短,并且不需要主线程参与的简单任务建议使用这种模式。例如:
// Called in the same thread (default)
public void onEvent(MessageEvent event) {log(event.message);
}
  • MainThread
    这种模式订阅者会在主线程中调用。如果事件发布是在主线程,那么事件处理程序会立即被调用。使用这种模式事件处理必须尽快返回,以避免阻塞主线程。例如:
// Called in Android UI's main thread
public void onEventMainThread(MessageEvent event) {textField.setText(event.message);
}
  • BackgroundThread
    这种模式订阅者会在后台线程中调用。如果事件发布不在主线程,事件处理方法会直接在发布线程中调用;如果事件发布在主线程,EventBus则会依次传递所有的事件到一个后台进程。使用这种模式必须尽快返回以避免阻塞后台进程。
// Called in the background thread
public void onEventBackgroundThread(MessageEvent event){saveToDisk(event.message);
}
  • Async
    事件处理方法在一个单独的线程中调用。他始终是独立于发布线程和主线程。发布事件不需要等待事件处理方法的完成。如果使用耗时的操作应当使用这种模式,比如连接网络。应当避免同一时间触发大量的、长时间运行的异步处理方法,从而限制并发线程的数量。EventBus使用了线程池来有效的重用线程。
// Called in a separate thread
public void onEventAsync(MessageEvent event){backend.send(event.message);
}

4.3 订阅者优先级以及事件传递顺序

我们可以通过定义优先级来决定事件的传递顺序

int priority = 1;
EventBus.getDefault().register(this, priority);

在同一个ThreadMode中,优先级高的订阅者会先接收到事件。默认的优先级是0。优先级在不同的ThreadModes中是没有效果的


4.4 使用EventBusBuilder配置EventBus

EventBus2.3增加了EventBusBuilder来配置EventBus。例如:配置一个当事件没有订阅者的时候,发布一个事件时,EventBus不做任何事情。

EventBus eventBus = EventBus.builder()
.logNoSubscriberMessages(false)
.sendNoSubscriberEvent(false).build();

更多设置请查看 EventBusBuilder 类和他的javaDoc

4.5 配置默认的EventBus实例

最简单的方式是使用EventBus.getDefault()来获取一个共享的EventBus实例,同时可以使用EventBusBuilder的installDefaultEventBus()来创建默认实例。
例如:可能需要配置一个默认的EventBus实例来将在onEvent()方法中的例外再次抛出,但是我们只想在debug模式中这样做,因为这位导致app的崩溃。

EventBus.builder().throwSubscriberException(BuildConfig.DEBUG).installDefaultEventBus();

在EventBus实例第一次使用前,这种配置只能做一次,从而确保在应用程序中的一致性。最好的地方是在Application类中进行初始化。

4.6 取消事件发送

当取消事件发送后,后面的订阅者就不再会接收到事件

// Called in the same thread (default)
public void onEvent(MessageEvent event){// Process the event ...EventBus.getDefault().cancelEventDelivery(event) ;
}

事件通常是在较高优先级的订阅者中取消。取消动作仅限于运行在发布线程的事件处理方法。

4.7 sticky事件

一些事件携带的信息只有在其发布之后才会被关注。例如,有些事件会标记一些初始化的完成。或者一些传感器或者位置数据需要获取最新的值,这些情况我们就可以使用sticky事件。EventBus会在内存中保留某种类型最新的sticky事件

EventBus.getDefault().postSticky(new MessageEvent("Hello everyone!"));

在stickyEvent发布后,当有新的Activity启动,并注册了sticky事件,他就会立刻收到该事件

@Override
public void onStart() {super.onStart();EventBus.getDefault().registerSticky(this);
}public void onEventMainThread(MessageEvent event) {textField.setText(event.message);
}@Override
public void onStop() {EventBus.getDefault().unregister(this);super.onStop();
}

我们也可以来获取指定类型的sticky事件

EventBus.getDefault().getStickyEvent(Class<?> eventType)

4.8 混淆的配置

-keepclassmembers class ** {public void onEvent*(**);
}# Only required if you use AsyncExecutor
-keepclassmembers class * extends de.greenrobot.event.util.ThrowableFailureEvent {<init>(java.lang.Throwable);
}

5. 加入EventBus到项目中

Gradle:

compile 'de.greenrobot:eventbus:2.4.0'

Maven:

<dependency>
<groupId>de.greenrobot</groupId>
<artifactId>eventbus</artifactId>
<version>2.4.0</version>
</dependency>


文/会飞的大象(简书作者)
原文链接:http://www.jianshu.com/p/3f83507b07b4
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
http://www.lbrq.cn/news/2352151.html

相关文章:

  • excel做网站链接娄底seo
  • 黄浦做网站seo优化是指
  • 公司官网网址陕西seo主管
  • 网站域名后缀网络推广公司口碑
  • 做公司网站需要制作内容营业推广是一种什么样的促销方式
  • 做网站 前途怎么建网址
  • 在人才网站做业务搜狗网站收录提交入口
  • 网站建设的一般流程是seo服务外包
  • 策划书中网站制作怎么写杭州小程序建设公司
  • 做旅游网站犯法吗技术培训
  • 万州区城乡建设委员会网站市场推广怎么做
  • 上海好的高端网站建设服务公司企业网站设计欣赏
  • 丽水做网站公司seo教程自学网
  • 网络推广软件排行seo网站内容优化
  • 一个数据库怎么做二个网站seo网站推广可以自己搞吗
  • 网站 前端seo日常工作内容
  • 网站域名申请费用好用的磁力搜索引擎
  • 西宁做网站_君博相约网站推广是干嘛的
  • 如何在公司服务器建个内部 网站推广码怎么填
  • 有没有可以做网站动图的软件友情链接吧
  • 网站被禁止访问怎么打开网络营销推广外包平台
  • 入职简历模板好的seo网站
  • 做网站该去哪找客户软文文章
  • 别人做的网站不能用怎么办啊seo学途论坛网
  • 中国生态文明建设的意义和目标网站整体优化
  • 中国设计在线网站百度竞价登录入口
  • 成都网站建设福州站长之家关键词查询
  • 广州海珠建网站北京网站seo优化推广
  • 装修网单平台哪个好点网站关键词排名优化推广软件
  • 宣传片制作公司前景优化大师兑换码
  • 技术分享:如何用规则定义生成自定义文件时间戳
  • FCN语义分割笔记(1)
  • 数据怎么分层?从ODS、DW、ADS三大层一一拆解!
  • Linux部署Python服务
  • APP端定位实现(uniapp Vue3)(腾讯地图)
  • 融合竞争学习与高斯扰动的多目标加权平均算法(MOWAA)求解多无人机协同路径规划(多起点多终点,起始点、无人机数、障碍物可自定义),提供完整MATLAB代码