Fix saved state in main and splash activity (#1633)

This commit is contained in:
Rafał Borcz
2021-11-16 18:13:10 +01:00
committed by GitHub
parent 8a181c747c
commit 7e0e2fbb67
18 changed files with 37 additions and 49 deletions

View File

@ -20,7 +20,7 @@ open class BasePresenter<T : BaseView>(
) {
private val job = SupervisorJob()
protected val presenterScope = CoroutineScope(job + Dispatchers.Main.immediate)
protected val presenterScope = CoroutineScope(job + Dispatchers.Main)
private val childrenJobs = mutableMapOf<String, Job>()

View File

@ -62,7 +62,7 @@ class LuckyNumberWidgetProvider : AppWidgetProvider() {
val appIntent = PendingIntent.getActivity(
context,
LUCKY_NUMBER_PENDING_INTENT_ID,
SplashActivity.getStartIntent(context, Destination.LuckyNumber, true),
SplashActivity.getStartIntent(context, Destination.LuckyNumber),
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntentCompat.FLAG_IMMUTABLE
)

View File

@ -1,6 +1,5 @@
package io.github.wulkanowy.ui.modules.main
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.os.Build.VERSION_CODES.P
@ -88,7 +87,6 @@ class MainActivity : BaseActivity<MainPresenter, ActivityMainBinding>(), MainVie
private var savedInstanceState: Bundle? = null
@SuppressLint("NewApi")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(ActivityMainBinding.inflate(layoutInflater).apply { binding = this }.root)
@ -97,7 +95,8 @@ class MainActivity : BaseActivity<MainPresenter, ActivityMainBinding>(), MainVie
messageContainer = binding.mainMessageContainer
updateHelper.messageContainer = binding.mainFragmentContainer
val destination = intent.getSerializableExtra(EXTRA_START_DESTINATION) as Destination?
val destination = (intent.getSerializableExtra(EXTRA_START_DESTINATION) as Destination?)
?.takeIf { savedInstanceState == null }
presenter.onAttachView(this, destination)
updateHelper.checkAndInstallUpdates(this)
@ -143,6 +142,7 @@ class MainActivity : BaseActivity<MainPresenter, ActivityMainBinding>(), MainVie
initialize(startMenuIndex, savedInstanceState)
}
savedInstanceState = null
}
private fun initializeToolbar() {
@ -292,6 +292,5 @@ class MainActivity : BaseActivity<MainPresenter, ActivityMainBinding>(), MainVie
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
navController.onSaveInstanceState(outState)
intent.removeExtra(EXTRA_START_DESTINATION)
}
}

View File

@ -33,17 +33,11 @@ class SplashActivity : BaseActivity<SplashPresenter, ViewBinding>(), SplashView
private const val EXTRA_EXTERNAL_URL = "external_url"
fun getStartIntent(
context: Context,
destination: Destination? = null,
startNewTask: Boolean = false
) = Intent(context, SplashActivity::class.java).apply {
putExtra(EXTRA_START_DESTINATION, destination)
if (startNewTask) {
fun getStartIntent(context: Context, destination: Destination? = null) =
Intent(context, SplashActivity::class.java).apply {
putExtra(EXTRA_START_DESTINATION, destination)
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {

View File

@ -179,7 +179,7 @@ class TimetableWidgetProvider : HiltBroadcastReceiver() {
val appIntent = PendingIntent.getActivity(
context,
TIMETABLE_PENDING_INTENT_ID,
SplashActivity.getStartIntent(context, Destination.Timetable(), true),
SplashActivity.getStartIntent(context, Destination.Timetable()),
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntentCompat.FLAG_IMMUTABLE
)