はじめに
AndroidアプリでHTTPリクエストをしようとするとメインスレッドでやるなと言われるので、手っ取り早く解決する方法を一応メモ。
環境
- Android Studio
- 3.5.1
- Kotlin
- 1.3.50
HTTPリクエストするならインターネット通信のパーミッションを取るのを忘れずに!
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
コード
メインスレッドでやらなければいいので、Threadクラスで別スレッドを作成すればOK。
今回はとりあえずHTTPリクエストをしてみる。
sample.kt
Thread {
// ここは非同期処理
val url = URL("https://www.google.com")
val httpCone = url.openConnection() as HttpURLConnection
httpCone.requestMethod = "GET"
httpCone.connect()
if (httpCone.responseCode in 200 .. 299) {
val resIS = httpCone.inputStream
val resReader = BufferedInputStream(resIS).bufferedReader()
Log.d("LOG", resReader.readLine())
}
}.start()
まとめ
とりあえず非同期処理を行いたい場合は、Thread
を使えばいいと思う。
本格的に使うのであれば、AsyncTask
やAsyncTaskLoader
を使うべきなのかな?