title: PublishSubject blockingLast() hangs Android app and not invoke
body: <p>I have a problem with getting the last emitted value from the Subject</p>
  
  <p>This is my class which is responsible for emitting and observing the battery changes:</p>
  
  <pre><code>class BatteryLevelProvider @Inject constructor(
  app: App
  ) {
  
  private val context: Context = app
  private val receiver: PowerConnectionReceiver = PowerConnectionReceiver()
  
  init {
  initializeReceiver()
  }
  
  private fun initializeReceiver() {
  IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { intentFilter -&gt;
    context.registerReceiver(receiver, intentFilter)
    }
  }
  
  companion object {
   val batteryLevelSubject = PublishSubject.create&lt;Int&gt;()
  }
  
  fun observeBatteryLevel(): Observable&lt;Int&gt; = batteryLevelSubject.distinctUntilChanged()
  
  fun getCurrentBatteryLevel(): Int {
  Timber.d("getCurrentBatteryLevel: ENTERED")
  val blockingLast = batteryLevelSubject.blockingLast(0)
  Timber.d("getCurrentBatteryLevel: $blockingLast")
  return blockingLast
  }
  
  inner class PowerConnectionReceiver : BroadcastReceiver() {
  
  override fun onReceive(context: Context, intent: Intent) {
    val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
    val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
    val percentage= (level / scale.toFloat() * 100).toInt()
    batteryLevelSubject.onNext(percentage)
    Timber.d("Battery changed: $percentage")
      }
    }
  
  }
  </code></pre>
  
  <p>When i invoke the 
      getCurrentBatteryLevel()
  It reach the blockingLast never get return the value and hangs the app.
  What is the reason and how to handle this properly?</p>