{"id":1297,"date":"2023-03-18T10:28:04","date_gmt":"2023-03-18T02:28:04","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=1297"},"modified":"2023-04-29T09:17:55","modified_gmt":"2023-04-29T01:17:55","slug":"eventbus-3-encapsulation","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/03\/18\/eventbus-3-encapsulation\/","title":{"rendered":"EventBus 3.0 \u5c01\u88c5"},"content":{"rendered":"<h2>\u5c01\u88c5\u601d\u8def<\/h2>\n<ul>\n<li>\u5c01\u88c5\u4e00\u4e2aEventBus\u5de5\u5177\u7c7b\uff0c\u6d88\u606f\u7c7bMessageEvent<\/li>\n<li>\u5728BaseActivity\u4e2d\u9009\u62e9\u6ce8\u518c\u53ca\u63a5\u6536\u6d88\u606f\uff0c\u9ed8\u8ba4\u4e0d\u6ce8\u518c<\/li>\n<li>\u5b50Activity\u7ee7\u627fBaseActivity\uff0c\u5982\u9700\u63a5\u6536\u6d88\u606f\uff0c\u5219\u91cd\u5199\u7236\u7c7b\u7684\u65b9\u6cd5\uff0c\u8fd4\u56detrue<\/li>\n<li>\u5728\u9700\u8981\u53d1\u9001\u6d88\u606f\u7684\u5730\u65b9\u4f7f\u7528\u5de5\u5177\u7c7b\u53d1\u9001\u6d88\u606f<\/li>\n<\/ul>\n<p><!-- more --><\/p>\n<h2>\u5177\u4f53\u6b65\u9aa4<\/h2>\n<h3>\u5c01\u88c5EventBusUtil\u7c7b<\/h3>\n<pre><code class=\"language-java\">public class EventBusUtil {\n    public static void register(Object subscriber) {\n        EventBus.getDefault().register(subscriber);\n    }\n\n    public static void unregister(Object subscriber) {\n        EventBus.getDefault().unregister(subscriber);\n    }\n\n    public static void sendEvent(MessageEvent event) {\n        EventBus.getDefault().post(event);\n    }\n\n    public static void sendStickyEvent(MessageEvent event) {\n        EventBus.getDefault().postSticky(event);\n    }\n}<\/code><\/pre>\n<h3>\u5c01\u88c5MessageEvent<\/h3>\n<pre><code class=\"language-java\">public class MessageEvent&lt;T&gt; {\n    private int code;\n    private T data;\n\n    public MessageEvent(int code) {\n        this.code = code;\n    }\n\n    public MessageEvent(int code, T data) {\n        this.code = code;\n        this.data = data;\n    }\n\n    public int getCode() {\n        return code;\n    }\n\n    public void setCode(int code) {\n        this.code = code;\n    }\n\n    public T getData() {\n        return data;\n    }\n\n    public void setData(T data) {\n        this.data = data;\n    }\n}<\/code><\/pre>\n<p>\u5176\u4e2dcode\u5bf9\u5e94\u4e0d\u540c\u7684\u6d88\u606f\uff0cdata\u4e3a\u53d1\u9001\u7684\u5185\u5bb9<\/p>\n<h3>\u5728BaseActivity\u4e2d\u9009\u62e9\u6ce8\u518c\u53ca\u63a5\u6536\u6d88\u606f\uff0c\u9ed8\u8ba4\u4e0d\u6ce8\u518c<\/h3>\n<pre><code class=\"language-java\">public class BaseActivity extends Activity {\n\n    @Override\n    protected void onCreate(@Nullable Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        if (isRegisterEventBus()) {\n            EventBusUtil.register(this);\n        }\n    }\n\n    @Override\n    protected void onDestroy() {\n        super.onDestroy();\n        if (isRegisterEventBus()) {\n            EventBusUtil.unregister(this);\n        }\n    }\n\n    \/**\n     * \u662f\u5426\u6ce8\u518c\u4e8b\u4ef6\u5206\u53d1\n     *\n     * @return true\u7ed1\u5b9aEventBus\u4e8b\u4ef6\u5206\u53d1\uff0c\u9ed8\u8ba4\u4e0d\u7ed1\u5b9a\uff0c\u5b50\u7c7b\u9700\u8981\u7ed1\u5b9a\u7684\u8bdd\u590d\u5199\u6b64\u65b9\u6cd5\u8fd4\u56detrue.\n     *\/\n    protected boolean isRegisterEventBus() {\n        return false;\n    }\n\n    @Subscribe(threadMode = ThreadMode.MAIN)\n    public void onEventBusCome(MessageEvent event) {\n        if (event != null) {\n            receiveEvent(event);\n        }\n    }\n\n    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)\n    public void onStickyEventBusCome(MessageEvent event) {\n        if (event != null) {\n            receiveStickyEvent(event);\n        }\n    }\n\n    \/**\n     * \u63a5\u6536\u5230\u5206\u53d1\u5230\u4e8b\u4ef6\n     *\n     * @param event \u4e8b\u4ef6\n     *\/\n    protected void receiveEvent(MessageEvent event) {\n\n    }\n\n    \/**\n     * \u63a5\u53d7\u5230\u5206\u53d1\u7684\u7c98\u6027\u4e8b\u4ef6\n     *\n     * @param event \u7c98\u6027\u4e8b\u4ef6\n     *\/\n    protected void receiveStickyEvent(MessageEvent event) {\n\n    }\n}<\/code><\/pre>\n<h3>\u5b50Activity\u7ee7\u627fBaseActivity<\/h3>\n<pre><code class=\"language-java\">@Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.activity_ebfirst);\n    ButterKnife.bind(this);\n}\n\n@OnClick(R.id.button)\npublic void onViewClicked() {\n    EventBusUtil.sendStickyEvent(new MessageEvent&lt;&gt;(MyEventCode.CODE_B, mEditText.getText().toString()));\n    startActivity(new Intent(this, SecondActivity.class));\n}\n\n@Override\nprotected boolean isRegisterEventBus() {\n    return true;\n}\n\n@Override\nprotected void receiveEvent(MessageEvent event) {\n    switch (event.getCode()) {\n        case MyEventCode.CODE_A:\n            String data = (String) event.getData();\n            mTextView.setText(data);\n            break;\n    }\n}\n\n@Override\nprotected void receiveStickyEvent(MessageEvent event) {\n    switch (event.getCode()) {\n\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5c01\u88c5\u601d\u8def \u5c01\u88c5\u4e00\u4e2aEventBus\u5de5\u5177\u7c7b\uff0c\u6d88\u606f\u7c7bMessageEvent \u5728BaseActivity\u4e2d\u9009\u62e9\u6ce8\u518c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[115],"tags":[327],"class_list":["post-1297","post","type-post","status-publish","format-standard","hentry","category-thirdpart-framework","tag-eventbus"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1297"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1297\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}