├── .gitignore
├── README.md
├── app
├── .gitignore
├── build.gradle
├── libs
│ └── tbs_sdk_thirdapp_v2.2.0.1096_36549_sharewithdownload_withoutGame_obfs_20160830_211645.jar
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── codeest
│ │ └── geeknews
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── codeest
│ │ │ └── geeknews
│ │ │ ├── app
│ │ │ ├── App.java
│ │ │ └── Constants.java
│ │ │ ├── base
│ │ │ ├── BaseActivity.java
│ │ │ ├── BaseFragment.java
│ │ │ ├── BasePresenter.java
│ │ │ ├── BaseView.java
│ │ │ ├── RootActivity.java
│ │ │ ├── RootFragment.java
│ │ │ ├── RxPresenter.java
│ │ │ ├── SimpleActivity.java
│ │ │ ├── SimpleFragment.java
│ │ │ └── contract
│ │ │ │ ├── gank
│ │ │ │ ├── GirlContract.java
│ │ │ │ └── TechContract.java
│ │ │ │ ├── gold
│ │ │ │ ├── GoldContract.java
│ │ │ │ └── GoldMainContract.java
│ │ │ │ ├── main
│ │ │ │ ├── LikeContract.java
│ │ │ │ ├── MainContract.java
│ │ │ │ ├── SettingContract.java
│ │ │ │ └── WelcomeContract.java
│ │ │ │ ├── vtex
│ │ │ │ ├── NodeContract.java
│ │ │ │ ├── RepliesContract.java
│ │ │ │ └── VtexContract.java
│ │ │ │ ├── wechat
│ │ │ │ └── WechatContract.java
│ │ │ │ └── zhihu
│ │ │ │ ├── CommentContract.java
│ │ │ │ ├── DailyContract.java
│ │ │ │ ├── HotContract.java
│ │ │ │ ├── SectionChildContract.java
│ │ │ │ ├── SectionContract.java
│ │ │ │ ├── ThemeChildContract.java
│ │ │ │ ├── ThemeContract.java
│ │ │ │ └── ZhihuDetailContract.java
│ │ │ ├── component
│ │ │ ├── ACache.java
│ │ │ ├── CrashHandler.java
│ │ │ ├── ImageLoader.java
│ │ │ ├── InitializeService.java
│ │ │ ├── RxBus.java
│ │ │ └── UpdateService.java
│ │ │ ├── di
│ │ │ ├── component
│ │ │ │ ├── ActivityComponent.java
│ │ │ │ ├── AppComponent.java
│ │ │ │ └── FragmentComponent.java
│ │ │ ├── module
│ │ │ │ ├── ActivityModule.java
│ │ │ │ ├── AppModule.java
│ │ │ │ ├── FragmentModule.java
│ │ │ │ └── HttpModule.java
│ │ │ ├── qualifier
│ │ │ │ ├── GankUrl.java
│ │ │ │ ├── GoldUrl.java
│ │ │ │ ├── MyUrl.java
│ │ │ │ ├── VtexUrl.java
│ │ │ │ ├── WechatUrl.java
│ │ │ │ └── ZhihuUrl.java
│ │ │ └── scope
│ │ │ │ ├── ActivityScope.java
│ │ │ │ └── FragmentScope.java
│ │ │ ├── model
│ │ │ ├── DataManager.java
│ │ │ ├── bean
│ │ │ │ ├── CalendarBean.java
│ │ │ │ ├── CommentBean.java
│ │ │ │ ├── DailyBeforeListBean.java
│ │ │ │ ├── DailyListBean.java
│ │ │ │ ├── DetailExtraBean.java
│ │ │ │ ├── GankItemBean.java
│ │ │ │ ├── GankSearchItemBean.java
│ │ │ │ ├── GoldListBean.java
│ │ │ │ ├── GoldManagerBean.java
│ │ │ │ ├── GoldManagerItemBean.java
│ │ │ │ ├── HotListBean.java
│ │ │ │ ├── NodeBean.java
│ │ │ │ ├── NodeListBean.java
│ │ │ │ ├── ReadStateBean.java
│ │ │ │ ├── RealmLikeBean.java
│ │ │ │ ├── RepliesListBean.java
│ │ │ │ ├── SectionChildListBean.java
│ │ │ │ ├── SectionListBean.java
│ │ │ │ ├── ThemeChildListBean.java
│ │ │ │ ├── ThemeListBean.java
│ │ │ │ ├── TopicListBean.java
│ │ │ │ ├── VersionBean.java
│ │ │ │ ├── WXItemBean.java
│ │ │ │ ├── WelcomeBean.java
│ │ │ │ └── ZhihuDetailBean.java
│ │ │ ├── db
│ │ │ │ ├── DBHelper.java
│ │ │ │ └── RealmHelper.java
│ │ │ ├── event
│ │ │ │ ├── NightModeEvent.java
│ │ │ │ └── SearchEvent.java
│ │ │ ├── http
│ │ │ │ ├── HttpHelper.java
│ │ │ │ ├── RetrofitHelper.java
│ │ │ │ ├── api
│ │ │ │ │ ├── GankApis.java
│ │ │ │ │ ├── GoldApis.java
│ │ │ │ │ ├── MyApis.java
│ │ │ │ │ ├── VtexApis.java
│ │ │ │ │ ├── WeChatApis.java
│ │ │ │ │ └── ZhihuApis.java
│ │ │ │ ├── exception
│ │ │ │ │ └── ApiException.java
│ │ │ │ └── response
│ │ │ │ │ ├── GankHttpResponse.java
│ │ │ │ │ ├── GoldHttpResponse.java
│ │ │ │ │ ├── MyHttpResponse.java
│ │ │ │ │ └── WXHttpResponse.java
│ │ │ └── prefs
│ │ │ │ ├── ImplPreferencesHelper.java
│ │ │ │ └── PreferencesHelper.java
│ │ │ ├── presenter
│ │ │ ├── gank
│ │ │ │ ├── GirlPresenter.java
│ │ │ │ └── TechPresenter.java
│ │ │ ├── gold
│ │ │ │ ├── GoldMainPresenter.java
│ │ │ │ └── GoldPresenter.java
│ │ │ ├── main
│ │ │ │ ├── LikePresenter.java
│ │ │ │ ├── MainPresenter.java
│ │ │ │ ├── SettingPresenter.java
│ │ │ │ └── WelcomePresenter.java
│ │ │ ├── vtex
│ │ │ │ ├── NodePresenter.java
│ │ │ │ ├── RepliesPresenter.java
│ │ │ │ └── VtexPresenter.java
│ │ │ ├── wechat
│ │ │ │ └── WechatPresenter.java
│ │ │ └── zhihu
│ │ │ │ ├── CommentPresenter.java
│ │ │ │ ├── DailyPresenter.java
│ │ │ │ ├── HotPresenter.java
│ │ │ │ ├── SectionChildPresenter.java
│ │ │ │ ├── SectionPresenter.java
│ │ │ │ ├── ThemeChildPresenter.java
│ │ │ │ ├── ThemePresenter.java
│ │ │ │ └── ZhihuDetailPresenter.java
│ │ │ ├── ui
│ │ │ ├── gank
│ │ │ │ ├── activity
│ │ │ │ │ ├── GirlDetailActivity.java
│ │ │ │ │ └── TechDetailActivity.java
│ │ │ │ ├── adapter
│ │ │ │ │ ├── GankMainAdapter.java
│ │ │ │ │ ├── GirlAdapter.java
│ │ │ │ │ └── TechAdapter.java
│ │ │ │ └── fragment
│ │ │ │ │ ├── GankMainFragment.java
│ │ │ │ │ ├── GirlFragment.java
│ │ │ │ │ └── TechFragment.java
│ │ │ ├── gold
│ │ │ │ ├── activity
│ │ │ │ │ └── GoldManagerActivity.java
│ │ │ │ ├── adapter
│ │ │ │ │ ├── GoldListAdapter.java
│ │ │ │ │ ├── GoldManagerAdapter.java
│ │ │ │ │ └── GoldPagerAdapter.java
│ │ │ │ └── fragment
│ │ │ │ │ ├── GoldMainFragment.java
│ │ │ │ │ └── GoldPagerFragment.java
│ │ │ ├── main
│ │ │ │ ├── activity
│ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ └── WelcomeActivity.java
│ │ │ │ ├── adapter
│ │ │ │ │ └── LikeAdapter.java
│ │ │ │ └── fragment
│ │ │ │ │ ├── AboutFragment.java
│ │ │ │ │ ├── LikeFragment.java
│ │ │ │ │ └── SettingFragment.java
│ │ │ ├── vtex
│ │ │ │ ├── activity
│ │ │ │ │ ├── NodeActivity.java
│ │ │ │ │ ├── NodeListActivity.java
│ │ │ │ │ └── RepliesActivity.java
│ │ │ │ ├── adapter
│ │ │ │ │ ├── NodeAdapter.java
│ │ │ │ │ ├── NodeListAdapter.java
│ │ │ │ │ ├── RepliesAdapter.java
│ │ │ │ │ ├── TopicAdapter.java
│ │ │ │ │ └── VtexPagerAdapter.java
│ │ │ │ └── fragment
│ │ │ │ │ ├── VtexMainFragment.java
│ │ │ │ │ └── VtexPagerFragment.java
│ │ │ ├── wechat
│ │ │ │ ├── adapter
│ │ │ │ │ └── WechatAdapter.java
│ │ │ │ └── fragment
│ │ │ │ │ └── WechatMainFragment.java
│ │ │ └── zhihu
│ │ │ │ ├── activity
│ │ │ │ ├── CalendarActivity.java
│ │ │ │ ├── CommentActivity.java
│ │ │ │ ├── SectionActivity.java
│ │ │ │ ├── ThemeActivity.java
│ │ │ │ └── ZhihuDetailActivity.java
│ │ │ │ ├── adapter
│ │ │ │ ├── CommentAdapter.java
│ │ │ │ ├── CommentMainAdapter.java
│ │ │ │ ├── DailyAdapter.java
│ │ │ │ ├── HotAdapter.java
│ │ │ │ ├── SectionAdapter.java
│ │ │ │ ├── SectionChildAdapter.java
│ │ │ │ ├── ThemeAdapter.java
│ │ │ │ ├── ThemeChildAdapter.java
│ │ │ │ ├── TopPagerAdapter.java
│ │ │ │ └── ZhihuMainAdapter.java
│ │ │ │ └── fragment
│ │ │ │ ├── CommentFragment.java
│ │ │ │ ├── DailyFragment.java
│ │ │ │ ├── HotFragment.java
│ │ │ │ ├── SectionFragment.java
│ │ │ │ ├── ThemeFragment.java
│ │ │ │ └── ZhihuMainFragment.java
│ │ │ ├── util
│ │ │ ├── AlipayUtil.java
│ │ │ ├── CircularAnimUtil.java
│ │ │ ├── DateUtil.java
│ │ │ ├── HtmlUtil.java
│ │ │ ├── LogUtil.java
│ │ │ ├── RxUtil.java
│ │ │ ├── ShareUtil.java
│ │ │ ├── SnackbarUtil.java
│ │ │ ├── SystemUtil.java
│ │ │ ├── ToastUtil.java
│ │ │ └── XmlUtil.java
│ │ │ └── widget
│ │ │ ├── AppBlockCanaryContext.java
│ │ │ ├── CircleImageView.java
│ │ │ ├── CommonItemDecoration.java
│ │ │ ├── CommonSubscriber.java
│ │ │ ├── DefaultItemTouchHelpCallback.java
│ │ │ ├── FlowLayout.java
│ │ │ ├── GoldItemDecoration.java
│ │ │ ├── ProgressImageView.java
│ │ │ ├── SquareImageView.java
│ │ │ ├── TouchSwipeRefreshLayout.java
│ │ │ └── ZhihuDiffCallback.java
│ └── res
│ │ ├── animator
│ │ ├── color.xml
│ │ ├── lightning.xml
│ │ ├── star_first.xml
│ │ ├── star_second.xml
│ │ └── star_third.xml
│ │ ├── drawable
│ │ ├── bottom_black_bg.xml
│ │ ├── bottom_shadow_bg.xml
│ │ ├── dialog_toast_bg.xml
│ │ ├── drawer_item_bg.xml
│ │ ├── reply_bg.xml
│ │ ├── round_face_bg.xml
│ │ ├── selector_like.xml
│ │ ├── selector_toolbar_like.xml
│ │ ├── splash_bg.xml
│ │ ├── svg_anim_logo.xml
│ │ └── svg_logo.xml
│ │ ├── layout
│ │ ├── activity_calender.xml
│ │ ├── activity_comment.xml
│ │ ├── activity_girl_detail.xml
│ │ ├── activity_gold_manager.xml
│ │ ├── activity_main.xml
│ │ ├── activity_node.xml
│ │ ├── activity_replies.xml
│ │ ├── activity_section.xml
│ │ ├── activity_tech_detail.xml
│ │ ├── activity_theme.xml
│ │ ├── activity_welcome.xml
│ │ ├── activity_zhihu_detail.xml
│ │ ├── dialog_toast.xml
│ │ ├── fragment_about.xml
│ │ ├── fragment_comment.xml
│ │ ├── fragment_daily.xml
│ │ ├── fragment_gank_main.xml
│ │ ├── fragment_gold_main.xml
│ │ ├── fragment_gold_page.xml
│ │ ├── fragment_like.xml
│ │ ├── fragment_setting.xml
│ │ ├── fragment_tech.xml
│ │ ├── fragment_vtex_main.xml
│ │ ├── fragment_zhihu_main.xml
│ │ ├── item_comment.xml
│ │ ├── item_daily.xml
│ │ ├── item_date.xml
│ │ ├── item_girl.xml
│ │ ├── item_gold.xml
│ │ ├── item_gold_hot.xml
│ │ ├── item_gold_manager.xml
│ │ ├── item_gold_title.xml
│ │ ├── item_like_article.xml
│ │ ├── item_like_girl.xml
│ │ ├── item_node.xml
│ │ ├── item_node_top.xml
│ │ ├── item_replies.xml
│ │ ├── item_replies_top.xml
│ │ ├── item_section.xml
│ │ ├── item_tech.xml
│ │ ├── item_theme.xml
│ │ ├── item_top.xml
│ │ ├── item_top_pager.xml
│ │ ├── item_vtex.xml
│ │ ├── item_wechat.xml
│ │ ├── view_common_list.xml
│ │ ├── view_drawer_header.xml
│ │ ├── view_error.xml
│ │ ├── view_line_05.xml
│ │ ├── view_node_title.xml
│ │ ├── view_progress.xml
│ │ ├── view_tech_head.xml
│ │ └── view_toolbar.xml
│ │ ├── menu
│ │ ├── drawer_menu.xml
│ │ ├── girl_menu.xml
│ │ ├── main_menu.xml
│ │ └── tech_meun.xml
│ │ ├── mipmap-night-xxhdpi
│ │ ├── bg_drawer.jpg
│ │ ├── ic_cache.webp
│ │ ├── ic_clear.webp
│ │ ├── ic_feedback.webp
│ │ ├── ic_hot.webp
│ │ ├── ic_image.webp
│ │ ├── ic_night.webp
│ │ └── ic_update.webp
│ │ ├── mipmap-xhdpi
│ │ ├── bg_error.png
│ │ └── bg_splash.webp
│ │ ├── mipmap-xxhdpi
│ │ ├── bg_about.webp
│ │ ├── bg_drawer.jpg
│ │ ├── ic_alipay.jpg
│ │ ├── ic_android.webp
│ │ ├── ic_author.webp
│ │ ├── ic_cache.webp
│ │ ├── ic_clear.webp
│ │ ├── ic_close.webp
│ │ ├── ic_comment.webp
│ │ ├── ic_daily_comment.webp
│ │ ├── ic_daily_like.webp
│ │ ├── ic_daily_share.webp
│ │ ├── ic_drag.webp
│ │ ├── ic_drawer_about.webp
│ │ ├── ic_drawer_gank.webp
│ │ ├── ic_drawer_gold.webp
│ │ ├── ic_drawer_like.webp
│ │ ├── ic_drawer_setting.webp
│ │ ├── ic_drawer_vtex.webp
│ │ ├── ic_drawer_wechat.webp
│ │ ├── ic_drawer_zhihu.webp
│ │ ├── ic_fab_calendar.webp
│ │ ├── ic_feedback.webp
│ │ ├── ic_gold_author.webp
│ │ ├── ic_gold_like.webp
│ │ ├── ic_gold_time.webp
│ │ ├── ic_hot.webp
│ │ ├── ic_image.webp
│ │ ├── ic_ios.webp
│ │ ├── ic_launcher.png
│ │ ├── ic_menu.webp
│ │ ├── ic_night.webp
│ │ ├── ic_time.webp
│ │ ├── ic_toolbar_copy.webp
│ │ ├── ic_toolbar_like_n.webp
│ │ ├── ic_toolbar_like_p.webp
│ │ ├── ic_toolbar_save.webp
│ │ ├── ic_toolbar_share.webp
│ │ ├── ic_update.webp
│ │ └── ic_web.webp
│ │ ├── values-night
│ │ └── colors.xml
│ │ ├── values-w820dp
│ │ └── dimens.xml
│ │ ├── values
│ │ ├── attrs.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ ├── fileprovidepaths.xml
│ │ ├── nodes.xml
│ │ └── preferences.xml
│ └── test
│ └── java
│ └── com
│ └── codeest
│ └── geeknews
│ └── ExampleUnitTest.java
├── build.gradle
├── config.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── screenshots
├── GIF1.gif
├── GIF2.gif
├── GIF3.gif
├── PNG1.png
├── PNG2.png
├── PNG3.png
├── PNG4.png
├── PNG5.png
└── download.png
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | .DS_Store
6 | /build
7 | /captures
8 | .externalNativeBuild
9 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/libs/tbs_sdk_thirdapp_v2.2.0.1096_36549_sharewithdownload_withoutGame_obfs_20160830_211645.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codeestX/GeekNews/4e761b6be2991e0f99a22b6c121caf021bb09b16/app/libs/tbs_sdk_thirdapp_v2.2.0.1096_36549_sharewithdownload_withoutGame_obfs_20160830_211645.jar
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/codeest/Library/Android/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/codeest/geeknews/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static junit.framework.Assert.assertEquals;
11 |
12 | /**
13 | * Instrumentation test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.codeest.geeknews", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/BasePresenter.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base;
2 |
3 | /**
4 | * Created by codeest on 2016/8/2.
5 | * Presenter基类
6 | */
7 | public interface BasePresenter{
8 |
9 | void attachView(T view);
10 |
11 | void detachView();
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/BaseView.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base;
2 |
3 | /**
4 | * Created by codeest on 2016/8/2.
5 | * View基类
6 | */
7 | public interface BaseView {
8 |
9 | void showErrorMsg(String msg);
10 |
11 | void useNightMode(boolean isNight);
12 |
13 | //======= State =======
14 | void stateError();
15 |
16 | void stateEmpty();
17 |
18 | void stateLoading();
19 |
20 | void stateMain();
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/RxPresenter.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base;
2 |
3 | import com.codeest.geeknews.component.RxBus;
4 |
5 | import io.reactivex.disposables.CompositeDisposable;
6 | import io.reactivex.disposables.Disposable;
7 | import io.reactivex.functions.Consumer;
8 |
9 | /**
10 | * Created by codeest on 2016/8/2.
11 | * 基于Rx的Presenter封装,控制订阅的生命周期
12 | */
13 | public class RxPresenter implements BasePresenter {
14 |
15 | protected T mView;
16 | protected CompositeDisposable mCompositeDisposable;
17 |
18 | protected void unSubscribe() {
19 | if (mCompositeDisposable != null) {
20 | mCompositeDisposable.clear();
21 | }
22 | }
23 |
24 | protected void addSubscribe(Disposable subscription) {
25 | if (mCompositeDisposable == null) {
26 | mCompositeDisposable = new CompositeDisposable();
27 | }
28 | mCompositeDisposable.add(subscription);
29 | }
30 |
31 | protected void addRxBusSubscribe(Class eventType, Consumer act) {
32 | if (mCompositeDisposable == null) {
33 | mCompositeDisposable = new CompositeDisposable();
34 | }
35 | mCompositeDisposable.add(RxBus.getDefault().toDefaultFlowable(eventType, act));
36 | }
37 |
38 | @Override
39 | public void attachView(T view) {
40 | this.mView = view;
41 | }
42 |
43 | @Override
44 | public void detachView() {
45 | this.mView = null;
46 | unSubscribe();
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/SimpleActivity.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base;
2 |
3 | import android.app.Activity;
4 | import android.os.Bundle;
5 | import android.support.annotation.Nullable;
6 | import android.support.v7.widget.Toolbar;
7 | import android.view.View;
8 |
9 | import com.codeest.geeknews.app.App;
10 |
11 | import butterknife.ButterKnife;
12 | import butterknife.Unbinder;
13 | import me.yokeyword.fragmentation.SupportActivity;
14 |
15 | /**
16 | * Created by codeest on 16/8/11.
17 | * 无MVP的activity基类
18 | */
19 |
20 | public abstract class SimpleActivity extends SupportActivity {
21 |
22 | protected Activity mContext;
23 | private Unbinder mUnBinder;
24 |
25 | @Override
26 | protected void onCreate(@Nullable Bundle savedInstanceState) {
27 | super.onCreate(savedInstanceState);
28 | setContentView(getLayout());
29 | mUnBinder = ButterKnife.bind(this);
30 | mContext = this;
31 | onViewCreated();
32 | App.getInstance().addActivity(this);
33 | initEventAndData();
34 | }
35 |
36 | protected void setToolBar(Toolbar toolbar, String title) {
37 | toolbar.setTitle(title);
38 | setSupportActionBar(toolbar);
39 | getSupportActionBar().setDisplayHomeAsUpEnabled(true);
40 | getSupportActionBar().setDisplayShowHomeEnabled(true);
41 | toolbar.setNavigationOnClickListener(new View.OnClickListener() {
42 | @Override
43 | public void onClick(View view) {
44 | onBackPressedSupport();
45 | }
46 | });
47 | }
48 |
49 | protected void onViewCreated() {
50 |
51 | }
52 |
53 | @Override
54 | protected void onDestroy() {
55 | super.onDestroy();
56 | App.getInstance().removeActivity(this);
57 | mUnBinder.unbind();
58 | }
59 |
60 | protected abstract int getLayout();
61 | protected abstract void initEventAndData();
62 | }
63 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/SimpleFragment.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.os.Bundle;
6 | import android.support.annotation.Nullable;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 |
11 | import butterknife.ButterKnife;
12 | import butterknife.Unbinder;
13 | import me.yokeyword.fragmentation.SupportFragment;
14 |
15 | /**
16 | * Created by codeest on 16/8/11.
17 | * 无MVP的Fragment基类
18 | */
19 |
20 | public abstract class SimpleFragment extends SupportFragment {
21 |
22 | protected View mView;
23 | protected Activity mActivity;
24 | protected Context mContext;
25 | private Unbinder mUnBinder;
26 | protected boolean isInited = false;
27 |
28 | @Override
29 | public void onAttach(Context context) {
30 | mActivity = (Activity) context;
31 | mContext = context;
32 | super.onAttach(context);
33 | }
34 |
35 | @Nullable
36 | @Override
37 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
38 | mView = inflater.inflate(getLayoutId(), null);
39 | return mView;
40 | }
41 |
42 | @Override
43 | public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
44 | super.onViewCreated(view, savedInstanceState);
45 | mUnBinder = ButterKnife.bind(this, view);
46 | }
47 |
48 | @Override
49 | public void onLazyInitView(@Nullable Bundle savedInstanceState) {
50 | super.onLazyInitView(savedInstanceState);
51 | isInited = true;
52 | initEventAndData();
53 | }
54 |
55 | @Override
56 | public void onDestroyView() {
57 | super.onDestroyView();
58 | mUnBinder.unbind();
59 | }
60 |
61 | protected abstract int getLayoutId();
62 | protected abstract void initEventAndData();
63 | }
64 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/gank/GirlContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.gank;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.GankItemBean;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * Created by codeest on 16/8/19.
11 | */
12 |
13 | public interface GirlContract {
14 |
15 | interface View extends BaseView {
16 |
17 | void showContent(List list);
18 |
19 | void showMoreContent(List list);
20 | }
21 |
22 | interface Presenter extends BasePresenter {
23 |
24 | void getGirlData();
25 |
26 | void getMoreGirlData();
27 |
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/gank/TechContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.gank;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.GankItemBean;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * Created by codeest on 16/8/20.
11 | */
12 |
13 | public interface TechContract {
14 |
15 | interface View extends BaseView {
16 |
17 | void showContent(List mList);
18 |
19 | void showMoreContent(List mList);
20 |
21 | void showGirlImage(String url, String copyright);
22 | }
23 |
24 | interface Presenter extends BasePresenter {
25 |
26 | void getGankData(String tech, int type);
27 |
28 | void getMoreGankData(String tech);
29 |
30 | void getGirlImage();
31 |
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/gold/GoldContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.gold;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.GoldListBean;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * Created by codeest on 16/11/27.
11 | */
12 |
13 | public interface GoldContract {
14 |
15 | interface View extends BaseView {
16 |
17 | void showContent(List goldListBean);
18 |
19 | void showMoreContent(List goldMoreListBean, int start, int end);
20 | }
21 |
22 | interface Presenter extends BasePresenter {
23 |
24 | void getGoldData(String type);
25 |
26 | void getMoreGoldData();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/gold/GoldMainContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.gold;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.GoldManagerBean;
6 | import com.codeest.geeknews.model.bean.GoldManagerItemBean;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * Created by codeest on 16/11/28.
12 | */
13 |
14 | public interface GoldMainContract {
15 |
16 | interface View extends BaseView {
17 |
18 | void updateTab(List mList);
19 |
20 | void jumpToManager(GoldManagerBean mBean);
21 | }
22 |
23 | interface Presenter extends BasePresenter {
24 |
25 | void initManagerList();
26 |
27 | void setManagerList();
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/main/LikeContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.main;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.RealmLikeBean;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * Created by codeest on 2016/8/23.
11 | */
12 | public interface LikeContract {
13 |
14 | interface View extends BaseView {
15 |
16 | void showContent(List mList);
17 | }
18 |
19 | interface Presenter extends BasePresenter {
20 |
21 | void getLikeData();
22 |
23 | void deleteLikeData(String id);
24 |
25 | void changeLikeTime(String id,long time,boolean isPlus);
26 |
27 | boolean getLikePoint();
28 |
29 | void setLikePoint(boolean b);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/main/MainContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.main;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.tbruyelle.rxpermissions2.RxPermissions;
6 |
7 | /**
8 | * Created by codeest on 16/8/9.
9 | */
10 |
11 | public interface MainContract {
12 |
13 | interface View extends BaseView{
14 |
15 | void showUpdateDialog(String versionContent);
16 |
17 | void startDownloadService();
18 | }
19 |
20 | interface Presenter extends BasePresenter {
21 |
22 | void checkVersion(String currentVersion);
23 |
24 | void checkPermissions(RxPermissions rxPermissions);
25 |
26 | void setNightModeState(boolean b);
27 |
28 | void setCurrentItem(int index);
29 |
30 | int getCurrentItem();
31 |
32 | void setVersionPoint(boolean b);
33 |
34 | boolean getVersionPoint();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/main/SettingContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.main;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.VersionBean;
6 |
7 | /**
8 | * Created by codeest on 16/10/17.
9 | */
10 |
11 | public interface SettingContract {
12 |
13 | interface View extends BaseView {
14 |
15 | void showUpdateDialog(VersionBean bean);
16 |
17 | }
18 |
19 | interface Presenter extends BasePresenter {
20 |
21 | void checkVersion(String currentVersion);
22 |
23 | void setNightModeState(boolean b);
24 |
25 | void setNoImageState(boolean b);
26 |
27 | void setAutoCacheState(boolean b);
28 |
29 | boolean getNightModeState();
30 |
31 | boolean getNoImageState();
32 |
33 | boolean getAutoCacheState();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/main/WelcomeContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.main;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.WelcomeBean;
6 |
7 | /**
8 | * Created by codeest on 16/8/15.
9 | */
10 |
11 | public interface WelcomeContract {
12 |
13 | interface View extends BaseView {
14 |
15 | void showContent(WelcomeBean welcomeBean);
16 |
17 | void jumpToMain();
18 |
19 | }
20 |
21 | interface Presenter extends BasePresenter {
22 |
23 | void getWelcomeData();
24 |
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/vtex/NodeContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.vtex;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.NodeBean;
6 | import com.codeest.geeknews.model.bean.NodeListBean;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * Created by codeest on 16/12/23.
12 | */
13 |
14 | public interface NodeContract {
15 |
16 | interface View extends BaseView {
17 |
18 | void showContent(List mList);
19 |
20 | void showTopInfo(NodeBean mTopInfo);
21 | }
22 |
23 | interface Presenter extends BasePresenter {
24 |
25 | void getContent(String node_name);
26 |
27 | void getTopInfo(String node_name);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/vtex/RepliesContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.vtex;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.NodeListBean;
6 | import com.codeest.geeknews.model.bean.RealmLikeBean;
7 | import com.codeest.geeknews.model.bean.RepliesListBean;
8 |
9 | import java.util.List;
10 |
11 | /**
12 | * Created by codeest on 16/12/23.
13 | */
14 |
15 | public interface RepliesContract {
16 |
17 | interface View extends BaseView {
18 |
19 | void showContent(List mList);
20 |
21 | void showTopInfo(NodeListBean mTopInfo);
22 | }
23 |
24 | interface Presenter extends BasePresenter {
25 |
26 | void getContent(String topic_id);
27 |
28 | void getTopInfo(String topic_id);
29 |
30 | void insert(RealmLikeBean bean);
31 |
32 | void delete(String id);
33 |
34 | boolean query(String id);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/vtex/VtexContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.vtex;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.TopicListBean;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * Created by codeest on 16/12/23.
11 | */
12 |
13 | public interface VtexContract {
14 |
15 | interface View extends BaseView {
16 |
17 | void showContent(List mList);
18 |
19 | }
20 |
21 | interface Presenter extends BasePresenter {
22 |
23 | void getContent(String type);
24 |
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/wechat/WechatContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.wechat;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.WXItemBean;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * Created by codeest on 16/8/29.
11 | */
12 |
13 | public interface WechatContract {
14 |
15 | interface View extends BaseView {
16 |
17 | void showContent(List mList);
18 |
19 | void showMoreContent(List mList);
20 | }
21 |
22 | interface Presenter extends BasePresenter {
23 |
24 | void getWechatData();
25 |
26 | void getMoreWechatData();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/zhihu/CommentContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.zhihu;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.CommentBean;
6 |
7 | /**
8 | * Created by codeest on 16/8/18.
9 | */
10 |
11 | public interface CommentContract {
12 |
13 | interface View extends BaseView {
14 |
15 | void showContent(CommentBean commentBean);
16 |
17 | }
18 |
19 | interface Presenter extends BasePresenter {
20 |
21 | void getCommentData(int id,int commentKind);
22 |
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/zhihu/DailyContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.zhihu;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.DailyBeforeListBean;
6 | import com.codeest.geeknews.model.bean.DailyListBean;
7 |
8 | /**
9 | * Created by codeest on 16/8/11.
10 | */
11 |
12 | public interface DailyContract {
13 |
14 | interface View extends BaseView {
15 |
16 | void showContent(DailyListBean info);
17 |
18 | void showMoreContent(String date,DailyBeforeListBean info);
19 |
20 | void doInterval(int currentCount);
21 | }
22 |
23 | interface Presenter extends BasePresenter {
24 |
25 | void getDailyData();
26 |
27 | void getBeforeData(String date);
28 |
29 | void startInterval();
30 |
31 | void stopInterval();
32 |
33 | void insertReadToDB(int id);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/zhihu/HotContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.zhihu;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.HotListBean;
6 |
7 | /**
8 | * Created by codeest on 16/8/12.
9 | */
10 |
11 | public interface HotContract {
12 |
13 | interface View extends BaseView {
14 |
15 | void showContent(HotListBean hotListBean);
16 | }
17 |
18 | interface Presenter extends BasePresenter {
19 |
20 | void getHotData();
21 |
22 | void insertReadToDB(int id);
23 |
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/zhihu/SectionChildContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.zhihu;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.SectionChildListBean;
6 |
7 | /**
8 | * Created by codeest on 16/8/28.
9 | */
10 |
11 | public interface SectionChildContract {
12 |
13 | interface View extends BaseView {
14 |
15 | void showContent(SectionChildListBean sectionChildListBean);
16 | }
17 |
18 | interface Presenter extends BasePresenter {
19 |
20 | void getThemeChildData(int id);
21 |
22 | void insertReadToDB(int id);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/zhihu/SectionContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.zhihu;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.SectionListBean;
6 |
7 | /**
8 | * Created by codeest on 16/8/12.
9 | */
10 |
11 | public interface SectionContract {
12 |
13 | interface View extends BaseView {
14 |
15 | void showContent(SectionListBean sectionListBean);
16 |
17 | }
18 |
19 | interface Presenter extends BasePresenter {
20 |
21 | void getSectionData();
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/zhihu/ThemeChildContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.zhihu;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.ThemeChildListBean;
6 |
7 | /**
8 | * Created by codeest on 16/8/24.
9 | */
10 |
11 | public interface ThemeChildContract {
12 |
13 | interface View extends BaseView {
14 |
15 | void showContent(ThemeChildListBean themeChildListBean);
16 |
17 | }
18 |
19 | interface Presenter extends BasePresenter {
20 |
21 | void getThemeChildData(int id);
22 |
23 | void insertReadToDB(int id);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/zhihu/ThemeContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.zhihu;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.ThemeListBean;
6 |
7 | /**
8 | * Created by codeest on 16/8/12.
9 | */
10 |
11 | public interface ThemeContract {
12 |
13 | interface View extends BaseView {
14 |
15 | void showContent(ThemeListBean themeListBean);
16 | }
17 |
18 | interface Presenter extends BasePresenter {
19 |
20 | void getThemeData();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/base/contract/zhihu/ZhihuDetailContract.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.base.contract.zhihu;
2 |
3 | import com.codeest.geeknews.base.BasePresenter;
4 | import com.codeest.geeknews.base.BaseView;
5 | import com.codeest.geeknews.model.bean.DetailExtraBean;
6 | import com.codeest.geeknews.model.bean.ZhihuDetailBean;
7 |
8 | /**
9 | * Created by codeest on 16/8/13.
10 | */
11 |
12 | public interface ZhihuDetailContract {
13 |
14 | interface View extends BaseView {
15 |
16 | void showContent(ZhihuDetailBean zhihuDetailBean);
17 |
18 | void showExtraInfo(DetailExtraBean detailExtraBean);
19 |
20 | void setLikeButtonState(boolean isLiked);
21 | }
22 |
23 | interface Presenter extends BasePresenter {
24 |
25 | void getDetailData(int id);
26 |
27 | void getExtraData(int id);
28 |
29 | void insertLikeData();
30 |
31 | void deleteLikeData();
32 |
33 | void queryLikeData(int id);
34 |
35 | boolean getNoImageState();
36 |
37 | boolean getAutoCacheState();
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/component/ImageLoader.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.component;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.widget.ImageView;
6 |
7 | import com.bumptech.glide.Glide;
8 | import com.bumptech.glide.load.engine.DiskCacheStrategy;
9 | import com.codeest.geeknews.app.App;
10 |
11 | /**
12 | * Created by codeest on 2016/8/2.
13 | */
14 | public class ImageLoader {
15 |
16 | public static void load(Context context, String url, ImageView iv) { //使用Glide加载圆形ImageView(如头像)时,不要使用占位图
17 | if (!App.getAppComponent().preferencesHelper().getNoImageState()) {
18 | Glide.with(context).load(url).crossFade().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(iv);
19 | }
20 | }
21 |
22 | public static void load(Activity activity, String url, ImageView iv) { //使用Glide加载圆形ImageView(如头像)时,不要使用占位图
23 | if(!activity.isDestroyed()) {
24 | Glide.with(activity).load(url).crossFade().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(iv);
25 | }
26 | }
27 |
28 | public static void loadAll(Context context, String url, ImageView iv) { //不缓存,全部从网络加载
29 | Glide.with(context).load(url).crossFade().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).into(iv);
30 | }
31 |
32 | public static void loadAll(Activity activity, String url, ImageView iv) { //不缓存,全部从网络加载
33 | if(!activity.isDestroyed()) {
34 | Glide.with(activity).load(url).crossFade().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).into(iv);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/codeest/geeknews/component/RxBus.java:
--------------------------------------------------------------------------------
1 | package com.codeest.geeknews.component;
2 |
3 | import com.codeest.geeknews.util.RxUtil;
4 |
5 | import io.reactivex.Flowable;
6 | import io.reactivex.disposables.Disposable;
7 | import io.reactivex.functions.Consumer;
8 | import io.reactivex.processors.FlowableProcessor;
9 | import io.reactivex.processors.PublishProcessor;
10 |
11 | /**
12 | * Created by codeest on 2016/8/2.
13 | */
14 | public class RxBus {
15 | // 主题
16 | private final FlowableProcessor