Skip to content

Instantly share code, notes, and snippets.

View wellingtoncosta's full-sized avatar

Wellington Costa wellingtoncosta

View GitHub Profile
fun main() {
GlobalScope.launch {
val payments = fetchLastPayments()
processPayments(payments)
}
}
suspend fun doSomeHeavyOperation() {
// do some non blocking operation
}
class FragmentTwo : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_fragment_two, container, false).apply {
this.back_to_fragment_one.setOnClickListener {
RxBus.instance.publish(MAIN_ACTIVITY_SUBJECT, FRAGMENT_ONE_TAG)
}
class FragmentOne : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_fragment_one, container, false).apply {
this.go_to_fragment_two.setOnClickListener {
RxBus.instance.publish(MAIN_ACTIVITY_SUBJECT, FRAGMENT_TWO_TAG)
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
observeEvents()
RxBus.instance.publish(MAIN_ACTIVITY_SUBJECT, FRAGMENT_ONE_TAG)
}
private fun observeEvents() {
class RxBus private constructor() {
private val subjects = HashMap<String, PublishSubject<Any>>()
private val subscriptions = HashMap<Any, CompositeDisposable>()
private fun subject(key: String) = subjects.getOrPut(key) { PublishSubject.create() }
private fun disposable(key: Any) = subscriptions.getOrPut(key) { CompositeDisposable() }
fun subscribe(subject: String, owner: Any, action: (Any) -> Unit) {
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
observeEvents()
RxBus.instance.publish(FRAGMENT_ONE_TAG)
}
private fun observeEvents() {
class FragmentTwo : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_fragment_two, container, false).apply {
this.back_to_fragment_one.setOnClickListener {
RxBus.instance.publish(FRAGMENT_ONE_TAG)
}
class FragmentOne : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_fragment_one, container, false).apply {
this.go_to_fragment_two.setOnClickListener {
RxBus.instance.publish(FRAGMENT_TWO_TAG)
}
class RxBus private constructor() {
private val subject = PublishSubject.create<Any>()
fun publish(message: Any) {
subject.onNext(message)
}
fun subscribe(action: (Any) -> Unit): Disposable {
return subject.subscribe { action(it) }