-
-
Save tseglevskiy/a2f922a37a2224a9b3b577b1611a3020 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package ru.jollydroid.rxshop; | |
import android.content.Intent; | |
import android.databinding.DataBindingUtil; | |
import android.os.Bundle; | |
import android.support.annotation.CallSuper; | |
import android.support.v7.app.AppCompatActivity; | |
import android.util.Log; | |
import com.trello.rxlifecycle.ActivityEvent; | |
import java.util.concurrent.TimeUnit; | |
import ru.jollydroid.rxshop.databinding.ActivityMainBinding; | |
import rx.Observable; | |
import rx.schedulers.Schedulers; | |
import rx.subjects.BehaviorSubject; | |
public class MainActivity extends AppCompatActivity { | |
private ActivityMainBinding binding; | |
private Observable<Object> clicks; | |
private Observable<Long> ticker; | |
private BehaviorSubject<ActivityEvent> lifecycleSubject = BehaviorSubject.create(); | |
private Observable<ActivityEvent> waitOnPause; | |
private Observable<ActivityEvent> waitOnDestroy; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
binding = DataBindingUtil.setContentView(this, R.layout.activity_main); | |
lifecycleSubject.subscribe(s -> Log.d("happy", "lifecycle event " + s)); | |
waitOnDestroy = lifecycleSubject.takeFirst(e -> e == ActivityEvent.DESTROY); | |
clicks = Observable | |
.create(o -> { | |
Log.d("happy", "click listener created"); | |
binding.goSignUp.setOnClickListener(v -> o.onNext(null)); | |
}) | |
.doOnUnsubscribe(() -> { | |
Log.d("happy", "click listener removed"); | |
binding.goSignUp.setOnClickListener(null); | |
}); | |
clicks | |
.takeUntil(waitOnDestroy) | |
.subscribe(o -> { | |
Log.d("happy", "click"); | |
startActivity(new Intent(MainActivity.this, LoginActivity.class)); | |
}); | |
ticker = Observable | |
.interval(1, TimeUnit.SECONDS, Schedulers.io()) | |
.doOnUnsubscribe(() -> Log.d("happy", "unsubscribed from ticker")); | |
ticker | |
.takeUntil(waitOnDestroy) | |
.subscribe(o -> Log.d("happy", "tick " + o)); | |
lifecycleSubject.onNext(ActivityEvent.CREATE); | |
} | |
@Override | |
protected void onStart() { | |
super.onStart(); | |
lifecycleSubject.onNext(ActivityEvent.START); | |
} | |
@Override | |
@CallSuper | |
protected void onResume() { | |
super.onResume(); | |
lifecycleSubject.onNext(ActivityEvent.RESUME); | |
} | |
@Override | |
@CallSuper | |
protected void onPause() { | |
lifecycleSubject.onNext(ActivityEvent.PAUSE); | |
super.onPause(); | |
} | |
@Override | |
@CallSuper | |
protected void onStop() { | |
lifecycleSubject.onNext(ActivityEvent.STOP); | |
super.onStop(); | |
} | |
@Override | |
@CallSuper | |
protected void onDestroy() { | |
lifecycleSubject.onNext(ActivityEvent.DESTROY); | |
super.onDestroy(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment