onCreate () вызывается вместо onResume () при возобновлении фрагмента приложения - PullRequest
0 голосов
/ 14 марта 2020

Мой стек активности выглядит следующим образом:

MainActivity> HomeActivity> MapFragment

Когда я покидаю свое приложение из MapFragment в режиме разработки, я могу снова войти в приложение и мой метод onResume() будет называться. Поэтому я могу продолжить с того места, где остановился.

Когда я оставляю свое приложение из MapFragment в производственном режиме (установка приложения из Google Play), а затем захожу в приложение, вместо этого будет вызываться onCreate(). Поэтому фрагмент теряет свое состояние, и onViewCreated фрагмента будет вызван снова и разрушит пользовательский интерфейс.

Почему это поведение отличается в производственном режиме? Как я могу просто возобновить мой фрагмент в onResume() при возврате к нему, как в режиме разработки?

Мой код такой:

MainActivity

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
    val intent = Intent(this, HomeActivity::class.java)
    startActivity(intent)
    return finish()
}

HomeActivity

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_home)

MapFragment

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    initialiseFcmToken()
    initialiseProfileFragment()
    initialiseUser()
}

override fun onResume() {
    super.onResume()

PS: при повторном входе в приложение через «Недавние приложения» нет мой телефон, он успешно возобновляет фрагмент. Но если я снова войду в приложение, щелкнув значок приложения на панели запуска моего телефона, вместо этого будет вызвано onCreate().

...