Handle Activity going into Background on Android

This commit is contained in:
Florian Märkl 2019-09-28 14:34:34 +02:00
commit eea9eb9339
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
4 changed files with 30 additions and 14 deletions

View file

@ -23,6 +23,7 @@
<activity
android:name=".stream.StreamActivity"
android:theme="@style/StreamTheme"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:screenOrientation="userLandscape"/>
</application>

View file

@ -45,13 +45,31 @@ class StreamSession(val connectInfo: ConnectInfo)
var surfaceTexture: SurfaceTexture? = null
init
fun shutdown()
{
session?.stop()
session?.dispose()
session = null
//surfaceTexture?.release()
}
fun pause()
{
shutdown()
}
fun resume()
{
if(session != null)
return
try
{
val session = Session(connectInfo)
session.eventCallback = this::eventCallback
session.start()
val surfaceTexture = surfaceTexture
if(surfaceTexture != null)
session.setSurface(Surface(surfaceTexture))
this.session = session
}
catch(e: SessionCreateError)
@ -60,13 +78,6 @@ class StreamSession(val connectInfo: ConnectInfo)
}
}
fun shutdown()
{
session?.stop()
session?.dispose()
surfaceTexture?.release()
}
private fun eventCallback(event: Event)
{
when(event)

View file

@ -23,8 +23,7 @@ import android.util.Log
import android.view.KeyEvent
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import androidx.lifecycle.*
import com.metallic.chiaki.R
import com.metallic.chiaki.lib.ConnectInfo
import kotlinx.android.synthetic.main.activity_stream.*
@ -70,6 +69,13 @@ class StreamActivity : AppCompatActivity()
{
super.onResume()
hideSystemUI()
viewModel.session.resume()
}
override fun onPause()
{
super.onPause()
viewModel.session.pause()
}
override fun onWindowFocusChanged(hasFocus: Boolean)

View file

@ -23,17 +23,15 @@ import com.metallic.chiaki.lib.*
class StreamViewModel: ViewModel()
{
var isInitialized = false
private set(value) { field = value}
private var connectInfo: ConnectInfo? = null
private var _session: StreamSession? = null
val session: StreamSession get() = _session ?: throw UninitializedPropertyAccessException("StreamViewModel not initialized")
val isInitialized get() = connectInfo != null
fun init(connectInfo: ConnectInfo)
{
if(isInitialized)
return
isInitialized = true
_session = StreamSession(connectInfo)
}