I am writing an RSS Feed app in kotlin, and I got it working, but I want to write this AsyncTask code using Kotlin coroutines. How can I write this code using Kotlin coroutines?
class RssFeedFetcher(val context: RSSFragment) : AsyncTask<URL, Void, List<RssItem>>() {
private val reference = WeakReference(context)
private var stream: InputStream? = null;
override fun doInBackground(vararg params: URL?): List<RssItem>? {
val connect = params[0]?.openConnection() as HttpURLConnection
connect.readTimeout = 8000
connect.connectTimeout = 8000
connect.requestMethod = "GET"
connect.connect();
val responseCode: Int = connect.responseCode;
var rssItems: List<RssItem>? = null
if (responseCode == 200) {
stream = connect.inputStream;
try {
val parser = RssParser()
rssItems = parser.parse(stream!!)
} catch (e: IOException) {
e.printStackTrace()
}
}
return rssItems
}
override fun onPostExecute(result: List<RssItem>?) {
super.onPostExecute(result)
if (result != null && result.isNotEmpty()) {
reference.get()?.updateRV(result)
}
}