Skip to content

Commit 5934df9

Browse files
author
chunle.wei
committed
新增: EventBus测试.
1 parent 4cfe7a7 commit 5934df9

File tree

11 files changed

+571
-7
lines changed

11 files changed

+571
-7
lines changed

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@ dependencies {
186186
implementation 'com.squareup.retrofit2:retrofit:2.11.0'
187187
implementation 'com.squareup.retrofit2:converter-gson:2.11.0'
188188

189+
implementation("org.greenrobot:eventbus:3.3.1") //EventBust.
190+
189191
}
190192

191193
//apply plugin: 'com.google.gms.google-services'//极光推送:google通道.

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,9 @@
229229
<activity
230230
android:name=".test.test05_library.test00.RetrofitTestActivity"
231231
android:exported="false" />
232+
<activity
233+
android:name=".test.test05_library.test01.EventBusTestActivity"
234+
android:exported="false" />
232235
</application>
233236

234237
</manifest>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.wcl.testdemo.bean.eventbus;
2+
3+
/**
4+
* @Author WCL
5+
* @Date 2025/5/19 15:46
6+
* @Version
7+
* @Description EventBus事件:登录.
8+
*/
9+
public class EventLogon {
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.wcl.testdemo.bean.eventbus;
2+
3+
/**
4+
* @Author WCL
5+
* @Date 2025/5/19 15:46
6+
* @Version
7+
* @Description EventBus事件:退出登录.
8+
*/
9+
public class EventLogout {
10+
}

app/src/main/java/com/wcl/testdemo/init/BaseActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import androidx.annotation.Nullable;
1313
import androidx.appcompat.app.AppCompatActivity;
1414

15-
public class BaseActivity extends AppCompatActivity {
15+
public abstract class BaseActivity extends AppCompatActivity {
1616

1717
@Override
1818
protected void onCreate(@Nullable Bundle savedInstanceState) {

app/src/main/java/com/wcl/testdemo/test/test00_javabase/activity/JavaBaseActivity.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,20 @@
99
import com.blankj.utilcode.util.LogUtils;
1010
import com.blankj.utilcode.util.ToastUtils;
1111
import com.wcl.testdemo.R;
12+
import com.wcl.testdemo.bean.eventbus.EventLogon;
13+
import com.wcl.testdemo.bean.eventbus.EventLogout;
1214
import com.wcl.testdemo.test.test00_javabase.test00.JsonTestActivity;
1315
import com.wcl.testdemo.test.test00_javabase.test01.CacheTestActivity;
1416
import com.wcl.testdemo.test.test00_javabase.test02.SocketTestActivity;
1517
import com.wcl.testdemo.test.test00_javabase.test03.EncryptDecryptTestActivity;
1618
import com.wcl.testdemo.utils.MyTestNativeUtils;
1719

1820
import com.wcl.testdemo.init.BaseActivity;
21+
22+
import org.greenrobot.eventbus.EventBus;
23+
import org.greenrobot.eventbus.Subscribe;
24+
import org.greenrobot.eventbus.ThreadMode;
25+
1926
import butterknife.BindView;
2027
import butterknife.ButterKnife;
2128
import butterknife.OnClick;
@@ -40,6 +47,13 @@ protected void onCreate(Bundle savedInstanceState) {
4047
super.onCreate(savedInstanceState);
4148
setContentView(R.layout.activity_java_base);
4249
ButterKnife.bind(this);
50+
EventBus.getDefault().register(this);
51+
}
52+
53+
@Override
54+
protected void onDestroy() {
55+
super.onDestroy();
56+
EventBus.getDefault().unregister(this);
4357
}
4458

4559
@OnClick({R.id.tv_0, R.id.tv_1, R.id.tv_2, R.id.tv_3, R.id.tv_4, R.id.tv_5, R.id.tv_6, R.id.tv_7, R.id.tv_8, R.id.tv_9, R.id.tv_10, R.id.tv_11, R.id.tv_12, R.id.tv_13, R.id.tv_14, R.id.tv_15, R.id.tv_16, R.id.tv_17, R.id.tv_18, R.id.tv_19, R.id.tv_20})
@@ -121,4 +135,14 @@ private void print(String msg) {
121135
}
122136
}
123137

138+
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
139+
public void onEvent(EventLogon event) {//方法名不限,可自定义.
140+
LogUtils.d("EventBusSubscribe", "订阅者[" + this.getClass().getSimpleName() + "], 粘性事件[" + event.getClass().getSimpleName() + "]");
141+
}
142+
143+
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
144+
public void onEvent(EventLogout event) {//方法名不限,可自定义.
145+
LogUtils.d("EventBusSubscribe", "订阅者[" + this.getClass().getSimpleName() + "], 粘性事件[" + event.getClass().getSimpleName() + "]");
146+
}
147+
124148
}

app/src/main/java/com/wcl/testdemo/test/test01_androidbase/activity/AndroidBaseActivity.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,25 @@
3333
import com.blankj.utilcode.util.Utils;
3434
import com.blankj.utilcode.util.UtilsTransActivity;
3535
import com.wcl.testdemo.R;
36+
import com.wcl.testdemo.bean.eventbus.EventLogon;
37+
import com.wcl.testdemo.bean.eventbus.EventLogout;
3638
import com.wcl.testdemo.constant.SPKeys;
39+
import com.wcl.testdemo.init.BaseActivity;
3740
import com.wcl.testdemo.init.TestActivity;
3841
import com.wcl.testdemo.test.test01_androidbase.test03.SaveFileActivity;
3942
import com.wcl.testdemo.test.test01_androidbase.test08.DialogTestActivity;
4043
import com.wcl.testdemo.utils.FileUtils;
4144
import com.wcl.testdemo.utils.dialog.MyDialogFragment;
4245

46+
import org.greenrobot.eventbus.EventBus;
47+
import org.greenrobot.eventbus.Subscribe;
48+
import org.greenrobot.eventbus.ThreadMode;
49+
4350
import java.io.File;
4451
import java.util.ArrayList;
4552
import java.util.List;
4653

4754
import androidx.annotation.NonNull;
48-
49-
import com.wcl.testdemo.init.BaseActivity;
50-
5155
import androidx.core.app.NotificationCompat;
5256
import butterknife.BindView;
5357
import butterknife.ButterKnife;
@@ -82,6 +86,13 @@ protected void onCreate(Bundle savedInstanceState) {
8286
super.onCreate(savedInstanceState);
8387
setContentView(R.layout.activity_android_base);
8488
ButterKnife.bind(this);
89+
EventBus.getDefault().register(this);
90+
}
91+
92+
@Override
93+
protected void onDestroy() {
94+
super.onDestroy();
95+
EventBus.getDefault().unregister(this);
8596
}
8697

8798
@Override
@@ -444,4 +455,16 @@ private void print(String msg) {
444455
}
445456
}
446457

458+
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
459+
public void onEvent(EventLogon event) {//方法名不限,可自定义.
460+
LogUtils.d("EventBusSubscribe", "订阅者[" + this.getClass().getSimpleName() + "], 粘性事件[" + event.getClass().getSimpleName() + "]");
461+
EventBus.getDefault().removeStickyEvent(event);//移除"粘性事件".
462+
}
463+
464+
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
465+
public void onEvent(EventLogout event) {//方法名不限,可自定义.
466+
LogUtils.d("EventBusSubscribe", "订阅者[" + this.getClass().getSimpleName() + "], 粘性事件[" + event.getClass().getSimpleName() + "]");
467+
EventBus.getDefault().removeStickyEvent(event);//移除"粘性事件".
468+
}
469+
447470
}

app/src/main/java/com/wcl/testdemo/test/test05_library/activity/TestLibraryActivity.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,16 @@
55
import android.view.View;
66
import android.widget.TextView;
77

8+
import com.blankj.utilcode.util.LogUtils;
89
import com.wcl.testdemo.R;
10+
import com.wcl.testdemo.bean.eventbus.EventLogon;
911
import com.wcl.testdemo.init.BaseActivity;
1012
import com.wcl.testdemo.test.test05_library.test00.RetrofitTestActivity;
13+
import com.wcl.testdemo.test.test05_library.test01.EventBusTestActivity;
14+
15+
import org.greenrobot.eventbus.EventBus;
16+
import org.greenrobot.eventbus.Subscribe;
17+
import org.greenrobot.eventbus.ThreadMode;
1118

1219
import butterknife.BindView;
1320
import butterknife.ButterKnife;
@@ -32,15 +39,23 @@ protected void onCreate(Bundle savedInstanceState) {
3239
super.onCreate(savedInstanceState);
3340
setContentView(R.layout.activity_test_library);
3441
ButterKnife.bind(this);
42+
EventBus.getDefault().register(this);
43+
}
44+
45+
@Override
46+
protected void onDestroy() {
47+
super.onDestroy();
48+
EventBus.getDefault().unregister(this);
3549
}
3650

3751
@OnClick({R.id.tv_0, R.id.tv_1, R.id.tv_2, R.id.tv_3, R.id.tv_4, R.id.tv_5, R.id.tv_6, R.id.tv_7, R.id.tv_8, R.id.tv_9, R.id.tv_10, R.id.tv_11, R.id.tv_12, R.id.tv_13, R.id.tv_14, R.id.tv_15, R.id.tv_16, R.id.tv_17, R.id.tv_18, R.id.tv_19, R.id.tv_20})
3852
public void onClick(View view) {
3953
switch (view.getId()) {
40-
case R.id.tv_0://
54+
case R.id.tv_0://Retrofit测试.
4155
startActivity(new Intent(this, RetrofitTestActivity.class));
4256
break;
43-
case R.id.tv_1://
57+
case R.id.tv_1://EventBus测试.
58+
startActivity(new Intent(this, EventBusTestActivity.class));
4459
break;
4560
case R.id.tv_2://
4661
break;
@@ -83,4 +98,9 @@ public void onClick(View view) {
8398
}
8499
}
85100

101+
@Subscribe(threadMode = ThreadMode.MAIN)
102+
public void onEvent(EventLogon event) {//方法名不限,可自定义.
103+
LogUtils.d("EventBusSubscribe", "订阅者[" + this.getClass().getSimpleName() + "], 事件[" + event.getClass().getSimpleName() + "]");
104+
}
105+
86106
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package com.wcl.testdemo.test.test05_library.test01;
2+
3+
import android.os.Bundle;
4+
import android.view.View;
5+
import android.widget.TextView;
6+
7+
import com.blankj.utilcode.util.LogUtils;
8+
import com.wcl.testdemo.R;
9+
import com.wcl.testdemo.bean.eventbus.EventLogon;
10+
import com.wcl.testdemo.bean.TestBean;
11+
import com.wcl.testdemo.bean.eventbus.EventLogout;
12+
import com.wcl.testdemo.init.BaseActivity;
13+
14+
import org.greenrobot.eventbus.EventBus;
15+
import org.greenrobot.eventbus.Subscribe;
16+
import org.greenrobot.eventbus.ThreadMode;
17+
18+
import butterknife.BindView;
19+
import butterknife.ButterKnife;
20+
import butterknife.OnClick;
21+
22+
/**
23+
* @Author WCL
24+
* @Date 2023/11/30 17:06
25+
* @Version
26+
* @Description Retrofit测试界面.
27+
*/
28+
public class EventBusTestActivity extends BaseActivity {
29+
30+
/**
31+
* Comment: 用来输出测试结果的控制台.
32+
*/
33+
@BindView(R.id.tv)
34+
TextView mTvConsole;
35+
36+
@Override
37+
protected void onCreate(Bundle savedInstanceState) {
38+
super.onCreate(savedInstanceState);
39+
setContentView(R.layout.activity_event_bus_test);
40+
ButterKnife.bind(this);
41+
EventBus.getDefault().register(this); //注册"EventBus".
42+
}
43+
44+
@Override
45+
protected void onDestroy() {
46+
super.onDestroy();
47+
EventBus.getDefault().unregister(this); //注销"EventBus".
48+
}
49+
50+
@OnClick({R.id.tv_0, R.id.tv_1, R.id.tv_2, R.id.tv_3, R.id.tv_4, R.id.tv_5, R.id.tv_6, R.id.tv_7, R.id.tv_8, R.id.tv_9, R.id.tv_10, R.id.tv_11, R.id.tv_12, R.id.tv_13, R.id.tv_14, R.id.tv_15, R.id.tv_16, R.id.tv_17, R.id.tv_18, R.id.tv_19, R.id.tv_20})
51+
public void onClick(View view) {
52+
switch (view.getId()) {
53+
case R.id.tv_0://发送[普通]事件[登录].
54+
/**
55+
* 测试结果:
56+
* (1)发送该事件时,只会发给当前已注册的"事件订阅者".
57+
*/
58+
EventBus.getDefault().post(new EventLogon());
59+
break;
60+
case R.id.tv_1://发送[粘性]事件[登录].
61+
/**
62+
* 测试结果:
63+
* (1)"粘性事件"并不是只发送给"sticky=true"的"粘性事件订阅者",当前已注册的"普通事件订阅者"只要订阅类型相同也会收到该事件.
64+
* (2)"粘性事件"会一直存在,即使有多个新注册的"粘性事件订阅者"多次消费该事件,它还是会一直存在,除非中途调用"removeStickyEvent(event)"才会移除该事件.
65+
* (3)多次发送同一个类型的"粘性事件",新注册的"粘性事件订阅者"只会收到最后一次发送的事件.
66+
*/
67+
EventBus.getDefault().postSticky(new EventLogon());
68+
break;
69+
case R.id.tv_2://发送[粘性]事件[登出].
70+
/**
71+
* 测试结果:
72+
* (1)发送第2个其他类型的"粘性事件",不会将之前的"粘性事件"移除,会同时存在.
73+
*/
74+
EventBus.getDefault().postSticky(new EventLogout());
75+
break;
76+
case R.id.tv_3://
77+
break;
78+
case R.id.tv_4://
79+
break;
80+
case R.id.tv_5://
81+
break;
82+
case R.id.tv_6://
83+
break;
84+
case R.id.tv_7://
85+
break;
86+
case R.id.tv_8://
87+
break;
88+
case R.id.tv_9://
89+
break;
90+
case R.id.tv_10://
91+
break;
92+
case R.id.tv_11://
93+
break;
94+
case R.id.tv_12://
95+
break;
96+
case R.id.tv_13://
97+
break;
98+
case R.id.tv_14://
99+
break;
100+
case R.id.tv_15://
101+
break;
102+
case R.id.tv_16://
103+
break;
104+
case R.id.tv_17://
105+
break;
106+
case R.id.tv_18://
107+
break;
108+
case R.id.tv_19://
109+
break;
110+
case R.id.tv_20://
111+
break;
112+
}
113+
}
114+
115+
@Subscribe(threadMode = ThreadMode.MAIN)
116+
public void onEvent(EventLogon event) {//方法名不限,可自定义.
117+
LogUtils.d("EventBusSubscribe", "订阅者[" + this.getClass().getSimpleName() + "], 事件[" + event.getClass().getSimpleName() + "]");
118+
}
119+
120+
}

0 commit comments

Comments
 (0)