У меня есть два занятия.A
и B
.A
Запускается B
.
В B.onCreate()
я вызываю функцию для загрузки файла, который мне нужен в этом упражнении: DownloadFile()
.
Для этой цели B
имеетИндикатор выполнения, который я скрываю, как только загрузка закончится.
Я ожидал следующую последовательность действий:
A
звонки startActivity()
B
отображается B
показывает progressbar
B
вызовов onCreate
B.DownloadFile()
называется B
скрывает progressBar
Но на самом деле происходит следующее:
A
звонки startActivity()
- Экранзастрял на
A
B
звонки onCreate
B.DownloadFile()
вызывается B
никогда не показывает progressBar
B
отображается, файл уже загружен, сразу скрывая progresbar.
Теперь, когда я делал то же самое в той же последовательности, но вместо загрузки файла, я транслировал его, все работало нормально.Но это может иметь какое-то отношение к тому, как MediaPlayer
обрабатывает вещи.
Я попытался переключить onCreate
на onStart
или onResume
с того, что я видел на этот ответ .Но происходит то же самое.
Я хочу переключить активность, и только после отображения B
, я хочу, чтобы загрузка началась, но я не знаю как.
РЕДАКТИРОВАТЬ: По запросукод B
package com.skillcademy360.lite.activities
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
class DownloadActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
DownloadFile()
}
fun DownloadFile() {
}
}
Как я уже говорил, я уже пытался переключить onCreate
на onStart
и onResume
и даже onPostCreate
, которые не должны использоваться в любом случае.Но ни один из них не работает.
РЕДАКТИРОВАТЬ:
Я понимаю, что есть некоторые способы обойти эту проблему, но мне нужен прямой путь.Все это связано с наследованием и библиотекой, поэтому такие вещи, как «сохранение файла в качестве глобальной переменной», не сработают.
Приведенный выше код ведет себя так же, как и мой, поэтому янужно, чтобы эта проблема была точно решена без обходного пути с использованием AsyncTasks или глобальных переменных.
EDIT: чтобы уточнить.Я понимаю, что когда я звоню в onCreate
, DownloadFile()
блокирует пользовательский интерфейс.Однако, как показано ниже, то же самое происходит, когда я звоню в onResume
.Насколько я понимаю, и как написано в жизненном цикле , видимый жизненный цикл должен начаться после onStart
, но, похоже, он этого не делает.
package com.skillcademy360.lite.activities
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
class DownloadActivity: AppCompatActivity() {
override fun onResume(savedInstanceState: Bundle?) {
super.onResume(savedInstanceState)
DownloadFile()
}
fun DownloadFile() {
}
}