forked from github/wulkanowy-mirror
Fix saved state in main and splash activity (#1633)
This commit is contained in:
@ -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>()
|
||||
|
||||
|
@ -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
|
||||
)
|
||||
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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?) {
|
||||
|
@ -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
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user