@@ -23,25 +23,33 @@ import android.util.Log
2323import com.akaita.java.rxjava2debug.RxJava2Debug
2424import io.reactivex.Single
2525import io.reactivex.android.schedulers.AndroidSchedulers
26+ import io.reactivex.disposables.CompositeDisposable
2627import io.reactivex.functions.Consumer
2728import io.reactivex.schedulers.Schedulers
2829import kotlinx.android.synthetic.main.activity_main.*
2930
3031class MainActivity : AppCompatActivity () {
3132
33+ private val disposables = CompositeDisposable ()
34+
3235 override fun onCreate (savedInstanceState : Bundle ? ) {
3336 super .onCreate(savedInstanceState)
3437 setContentView(R .layout.activity_main)
3538
36- toggleAssembly.setOnCheckedChangeListener( { _, isChecked -> toggleRxJava2Debug(isChecked) })
39+ toggleAssembly.setOnCheckedChangeListener { _, isChecked -> toggleRxJava2Debug(isChecked) }
3740 handledException.setOnClickListener { generateHandledException() }
3841 unhandledException.setOnClickListener { generateUnhandledException() }
3942 }
4043
44+ override fun onDestroy () {
45+ disposables.clear()
46+ super .onDestroy()
47+ }
48+
4149 /* *
4250 * Toggle RxJava2Debug on and off.
4351 */
44- private fun toggleRxJava2Debug ( enable : Boolean ) {
52+ private fun toggleRxJava2Debug (enable : Boolean ) {
4553 if (enable) {
4654 RxJava2Debug .enableRxJava2AssemblyTracking(ExampleApplication .MY_CODE_PACKAGES )
4755 } else {
@@ -57,19 +65,21 @@ class MainActivity : AppCompatActivity() {
5765 * It handles the exception by printing it in LogCat and the screen, so the developer can fix it
5866 */
5967 private fun generateHandledException () {
60- Single .just(" event" )
61- .subscribeOn(Schedulers .computation())
62- .doOnEvent { _, _ -> Log .i(" HandledException" , " Start" ) }
63- .map { null }
64- .observeOn(AndroidSchedulers .mainThread())
65- .subscribe(
66- { Log .i(" HandledException" , " Subscribe" ) },
67- { t: Throwable ->
68- val enhancedStackTrace = RxJava2Debug .getEnhancedStackTrace(t)
69- Log .e(" HandledException" , " Error" , enhancedStackTrace)
70- displayStackTrace(enhancedStackTrace)
71- }
72- )
68+ disposables.add(
69+ Single .just(" event" )
70+ .subscribeOn(Schedulers .computation())
71+ .doOnEvent { _, _ -> Log .i(" HandledException" , " Start" ) }
72+ .map { null }
73+ .observeOn(AndroidSchedulers .mainThread())
74+ .subscribe(
75+ { Log .i(" HandledException" , " Subscribe" ) },
76+ { t: Throwable ->
77+ val enhancedStackTrace = RxJava2Debug .getEnhancedStackTrace(t)
78+ Log .e(" HandledException" , " Error" , enhancedStackTrace)
79+ displayStackTrace(enhancedStackTrace)
80+ }
81+ )
82+ )
7383 }
7484
7585 /* *
@@ -78,12 +88,14 @@ class MainActivity : AppCompatActivity() {
7888 * No implementation for `onError` is provided, so the exception will be thrown and it will eventually crash the app O_o
7989 */
8090 private fun generateUnhandledException () {
81- Single .just(" event" )
82- .subscribeOn(Schedulers .computation())
83- .doOnEvent { _, _ -> Log .i(" HandledException" , " Start" ) }
84- .map { null }
85- .observeOn(AndroidSchedulers .mainThread())
86- .subscribe(Consumer { Log .i(" UnhandledException" , " Subscribe" ) })
91+ disposables.add(
92+ Single .just(" event" )
93+ .subscribeOn(Schedulers .computation())
94+ .doOnEvent { _, _ -> Log .i(" HandledException" , " Start" ) }
95+ .map { null }
96+ .observeOn(AndroidSchedulers .mainThread())
97+ .subscribe(Consumer { Log .i(" UnhandledException" , " Subscribe" ) })
98+ )
8799 }
88100
89101 /* *
@@ -93,6 +105,7 @@ class MainActivity : AppCompatActivity() {
93105 textView.text = Html .fromHtml(
94106 throwable
95107 ?.toHtml()
96- ?.highlight(ExampleApplication .MY_CODE_PACKAGES ) ? : " Something horrible happened!" ) //
108+ ?.highlight(ExampleApplication .MY_CODE_PACKAGES )
109+ ? : " Something horrible happened!" ) //
97110 }
98111}
0 commit comments