Kotlin - MediaPlayer завершается, когда я делаю отдельный вызов API с большим количеством данных? - PullRequest
0 голосов
/ 09 января 2020

У меня 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")
            }
        })

    }


}

...