Android LiveData Shared between activities by Application Session I'm developing an app that use socket to receive messages from a chat.
I'm using an MVP approach and I store the data in a Singleton class named DataBridge like this:

class myApplication: Application() {

    val dataBridge: DataBridge = DataBridge()
    val deviceManager: DeviceManager = DeviceManager(this)

    override fun onCreate() {
        super.onCreate()
        instance = this

        //init Logger
        TimberImplementation.init()

        //init Maps
        Mapbox.getInstance(this, MAP_ACCESS_TOKEN)
    }

    companion object {
        lateinit var instance: InfiniteApplication
            private set
    }
}


I have the following scenario:


Main Activity: create socket connection and update data in DataBridge class. It has a ViewPagerAdapter with 4 fragments. Each Fragment has it's own Presenter.
Chat Activity: listen changes from DataBridge like onNewMessage (fired by HomeActivity) and display the chat


The question is: is a good practice to share Live Model by Application and make it accessible from presenter of different activities?
Is a good practice to share LiveData?
Yeah

Here as you are using the data in databridge as a single source of truth and it is used hold data which is needed to be shared across multiple screen with live updates, Livedata is a really good option as it will also handle the lifecycle for you.

Android docs also has sample on Extending LiveData to create your own singleton data source which you may find helpful.

Also you can leverage the feature of Object declarations in kotlin to lazy initialize your DataBridge rather than in Application class.