Skip to content

Instantly share code, notes, and snippets.

@ShaishavGandhi
Created August 5, 2018 21:17
Show Gist options
  • Save ShaishavGandhi/3b6609662ead8a1fd07b2105a98c88a6 to your computer and use it in GitHub Desktop.
Save ShaishavGandhi/3b6609662ead8a1fd07b2105a98c88a6 to your computer and use it in GitHub Desktop.
Hot observable
package com.shaishavgandhi.rxreplayingsharesample
import android.os.Bundle
import com.google.android.material.snackbar.Snackbar
import androidx.appcompat.app.AppCompatActivity;
import android.view.Menu
import android.view.MenuItem
import androidx.lifecycle.ViewModelProviders
import com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
import com.uber.autodispose.autoDisposable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.content_main.*
class MainActivity : AppCompatActivity() {
// Lifecycle scope using Uber's AutoDispose for automatic disposing of Observables.
private val scopeProvider by lazy { AndroidLifecycleScopeProvider.from(this) }
// Custom view model factory
private val viewModelFactory by lazy { MainViewModel.Factory(ImageRepository(resources)) }
// ViewModel for given Activity
private val viewModel by lazy { ViewModelProviders.of(this, viewModelFactory).get(MainViewModel::class.java) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
viewModel.image()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.autoDisposable(scopeProvider)
.subscribe({ bitmap ->
imageView.setImageBitmap(bitmap)
}, { _ ->})
button.setOnClickListener {
viewModel.loadImage(R.raw.sunset)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment