摘要:依賴于的編譯時事件總線并且支持粘連事件以及多個調(diào)度器示例預(yù)覽引入到項目中我們需要引入一個插件到我們的來開啟注解處理功能注解處理工具增加插件到項目的配置文件中使用插件來開啟注解處理功能實際操作時請使用最新的版本這僅僅是一個示例使用方法
依賴于RxJava的編譯時Android事件總線,并且支持Sticky(粘連)事件,以及多個Rx調(diào)度器.
示例預(yù)覽 引入Apollo到項目中我們需要引入一個apt插件到我們的classpath來開啟注解處理功能.
buildscript { repositories { jcenter() } dependencies { //Android注解處理工具 classpath "com.neenbedankt.gradle.plugins:android-apt:1.8" } } allProjects { repositories { maven { url "https://www.jitpack.io" } } }
增加apt插件到項目的build.gradle配置文件中,使用apt插件來開啟注解處理功能.
apply plugin: "com.neenbedankt.android-apt" dependencies { apt "com.github.lsxiao.Apollo:processor:0.1.4-alpha.1" compile "com.github.lsxiao.Apollo:apollo:0.1.4-alpha.1" compile "io.reactivex:rxandroid:1.2.1"http://實際操作時請使用最新的rxandroid版本,這僅僅是一個示例. }使用方法 Init
在Application中初始化Apollo.
public class App extends Application { @Override public void onCreate() { super.onCreate(); //注意!SubscriberBinderImplement 是由Apollo在編譯時生成的代碼. //因為Apollo是java庫,所以無法依賴于Android庫(RxAndroid). //所以你必須提供一個AndroidSchedulers.mainThread()調(diào)度器來初始化Apollo. Apollo.get().init(SubscriberBinderImplement.instance(), AndroidSchedulers.mainThread()); } }綁定/解綁
你可以在基類中來綁定和解綁Apollo.
public abstract class BaseActivity extends AppCompatActivity { private SubscriptionBinder mBinder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutId()); mBinder = Apollo.get().bind(this); afterCreate(savedInstanceState); } @Override protected void onDestroy() { super.onDestroy(); mBinder.unbind(); } protected abstract int getLayoutId(); protected abstract void afterCreate(Bundle savedInstanceState); }接收事件
在你喜歡的地方來接收事件.
默認使用
@Receive(tag = TAG) public void receiveEvent(Event event) { //do something. }
無參使用
@Receive(tag = TAG) public void showDialog(){ //show dialog. }
多個Tag
@Receive(tag = {TAG1,TAG2}) public void showDialog(){ //show dialog. }
只接受一次普通事件
//the event will be received only once. @Receive(tag = TAG,type = Receive.Type.NORMAL_ONCE) public void showDialog(){ //show dialog. }
調(diào)度器
//the subscribeOn and observeOn support main, io, new, computation, trampoline, immediate schedulers. //subscribeOn default scheduler is io. //observeOn default scheduler is main. @Receive(tag = TAG,subscribeOn = Receive.Thread.IO, observeOn = Receive.Thread.MAIN) public void receiveUser() { //do something. }
接收sticky事件
@Receive(tag = TAG,type = Receive.Type.STICKY) public void receiveEvent(Event event) { //do something. }
接收后清除該sticky事件
@Receive(tag = TAG,type = Receive.Type.STICKY_REMOVE) public void receiveEvent(Event event) { //do something. }
接收后清除所有的sticky事件
@Receive(tag = TAG,type = Receive.Type.STICKY_REMOVE_ALL) public void receiveEvent(Event event) { //do something. }發(fā)送事件
//a normal event Apollo.get().send(EVENT_SHOW_USER, new User("lsxiao")); //a non-parameter event Apollo.get().send(EVENT_SHOW_USER); //a sticky event Apollo.get().sendSticky(EVENT_SHOW_BOOK, new Book("A Song of Ice and Fire"));Pull Requests(請求代碼合并)
歡迎所有的 pull requests.
維護人知乎 : @面條
Github : @lsxiao
開源許可Copyright 2016 lsxiao, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/65056.html
摘要:不同與其它中間件框架,中有大量的業(yè)務(wù)代碼,它向我們展示了大神是如何寫業(yè)務(wù)代碼的依賴的層次結(jié)構(gòu),如何進行基礎(chǔ)包配置,以及工具類編寫,可以稱之為之最佳實踐。代碼參考視圖解析器,這里的配置指的是不檢查頭,而且默認請求為格式。 不同與其它中間件框架,Apollo中有大量的業(yè)務(wù)代碼,它向我們展示了大神是如何寫業(yè)務(wù)代碼的:maven依賴的層次結(jié)構(gòu),如何進行基礎(chǔ)包配置,以及工具類編寫,可以稱之為sp...
摘要:是一個基于的緩存系統(tǒng)封裝,提供統(tǒng)一的和注解來簡化緩存的使用。提供了比更加強大的注解,可以原生的支持兩級緩存分布式自動刷新,還提供了接口用于手工緩存操作。緩存失效時間緩存的類型,包括。 之前一直在用Spring Cache進行接口數(shù)據(jù)的緩存,主要是Spring Cache在對具體key緩存失效時間的設(shè)置不是很方法,還要自己去擴展,無意中發(fā)現(xiàn)了阿里的JetCache。大部分的需求都能滿足,...
閱讀 2908·2021-11-25 09:43
閱讀 2331·2021-11-24 09:39
閱讀 2717·2021-09-23 11:51
閱讀 1407·2021-09-07 10:11
閱讀 1455·2019-08-27 10:52
閱讀 1939·2019-08-26 12:13
閱讀 3359·2019-08-26 11:57
閱讀 1399·2019-08-26 11:31