LightEvent is a lightweight publish/subscribe event bus for Android.
object Events {
const val LOGIN = 1
const val LOGOUT = 2
}
abstract class BaseActivity : AppCompatActivity(), Observer {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventManager.register(this)
}
override fun onDestroy() {
super.onDestroy()
EventManager.unregister(this)
}
override fun onEvent(event: Int, vararg args: Any?) {
}
override fun listEvents(): IntArray {
return IntArray(0)
}
}
class MainActivity : BaseActivity() {
private fun setViews(account: String?) {
// update views
}
override fun listEvents(): IntArray {
return intArrayOf(Events.LOGIN, Events.LOGOUT)
}
override fun onEvent(event: Int, vararg args: Any?) {
when (event) {
Events.LOGIN -> setViews(args[0] as String?)
Events.LOGOUT -> setViews(null)
}
}
}
object AccountManager {
fun login(account: String, password: String) {
// process login
EventManager.notify(Events.LOGIN, account)
}
fun logout() {
// process logout
EventManager.notify(Events.LOGOUT)
}
}
For more detail, see: https://www.jianshu.com/p/bfce80e16141
See the LICENSE file for license rights and limitations.