У меня MediaPlayer
работает как часть объекта. Он продолжает играть, когда я изменяю фрагменты, но когда я изменяю на фрагмент, который должен загрузить recyclerView
с большим количеством данных в нем, извлекаемых из API и начинающих прокручиваться, MediaPlayer завершает работу и останавливает воспроизведение. Он не делает это для фрагментов с меньшим количеством данных. Есть идеи, почему это может происходить?
object AudioService {
fun playRadio(view: View, url: String) = try {
var mp: MediaPlayer? = null
mp = MediaPlayer().apply {
setOnPreparedListener{
it.start()
}
}
mp!!.reset()
mp!!.setDataSource(url)
mp!!.prepareAsync()
} catch (ex: Exception) {
}
}
// below is the offending Fragment
class ArchiveFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_archive, container, false)
}
override fun onStart() {
super.onStart()
recyclerView_ArchiveMain.layoutManager = LinearLayoutManager(activity)
fetchJson()
}
fun fetchJson() {
val url = "https://b9adwdwdawda137hoj.execute-api.eu-west-2.amazonaws.com/threshold/"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
val body = response.body?.string()
val gson = GsonBuilder().create()
val theList: List<Episodes> = gson.fromJson(body, Array<Episodes>::class.java).toList()
var episodes = theList.reversed()
activity?.runOnUiThread { recyclerView_ArchiveMain.adapter =
ArchiveAdapter(episodes) }
}
override fun onFailure(call: Call, e: IOException) {
println("Oh shit it failed")
}
})
}
}