如何使用Kotlin在Android中進行API調用?我已經聽說Anko。但是我想使用Kotlin提供的方法,就像我們在後臺操作中使用Asynctask一樣。Android與Kotlin的AsyncTask
1
A
回答
7
AsyncTask
是一個Android API,而不是由Java和科特林提供語言功能。
class someTask() : AsyncTask<Void, Void, String>() {
override fun doInBackground(vararg params: Void?): String? {
// ...
}
override fun onPreExecute() {
super.onPreExecute()
// ...
}
override fun onPostExecute(result: String?) {
super.onPostExecute(result)
// ...
}
}
安口的doAsync
是不是真的由科特林「提供的」,因爲安口是使用語言功能從科特林簡化長碼庫:如果你願意,也可以只使用他們這樣。請點擊這裏:
如果您使用的安口代碼將類似於此:
doAsync {
// ...
}
+0
我們如何防止這種警告「le ak可能發生使異步任務靜態「? – Killer
1
package com.irontec.kotlintest
import android.os.AsyncTask
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_main.*
import org.json.JSONObject
import java.io.BufferedInputStream
import java.io.BufferedReader
import java.io.InputStreamReader
import java.net.HttpURLConnection
import java.net.URL
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
GetWeatherTask(this.text).execute()
}
class GetWeatherTask(textView: TextView) : AsyncTask<Unit, Unit, String>() {
val innerTextView: TextView? = textView
override fun doInBackground(vararg params: Unit?): String? {
val url = URL("https://raw.githubusercontent.com/irontec/android-kotlin-samples/master/common-data/bilbao.json")
val httpClient = url.openConnection() as HttpURLConnection
if (httpClient.responseCode == HttpURLConnection.HTTP_OK) {
try {
val stream = BufferedInputStream(httpClient.inputStream)
val data: String = readStream(inputStream = stream)
return data
} catch (e: Exception) {
e.printStackTrace()
} finally {
httpClient.disconnect()
}
} else {
println("ERROR ${httpClient.responseCode}")
}
return null
}
fun readStream(inputStream: BufferedInputStream): String {
val bufferedReader = BufferedReader(InputStreamReader(inputStream))
val stringBuilder = StringBuilder()
bufferedReader.forEachLine { stringBuilder.append(it) }
return stringBuilder.toString()
}
override fun onPostExecute(result: String?) {
super.onPostExecute(result)
innerTextView?.text = JSONObject(result).toString()
/**
* ... Work with the weather data
*/
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_main, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val id = item.itemId
if (id == R.id.action_settings) {
return true
}
return super.onOptionsItemSelected(item)
}
}
鏈接 - Github Irontec
相關問題
- 1. android newRelic與AsyncTask
- 2. Android Asynctask與JSON
- 3. Android:多個與AsyncTask
- 4. Kotlin REPL與Android類unStub!ed
- 5. Asynctask與android中的pulltorefresh listview
- 6. Asynctask與android中的webservices
- 7. Android的AsyncTask錯誤與onPostExecute
- 8. kotlin的setOnLongClickListener android
- 9. Android綁定服務與AsyncTask
- 10. Android:與asynctask螺紋繪圖
- 11. Android ListView與JSON - Howto AsyncTask?
- 12. kotlin中的Android ViewModelProviderFactory
- 13. 的Android的AsyncTask與JSON解析錯誤
- 14. 的AsyncTask和onclicklistener的Android 2.3.3與3.2
- 15. 的Android的AsyncTask與本地代碼
- 16. 與Android中的AsyncTask相關的問題
- 17. Kotlin android parcelable
- 18. Kotlin for Android。 Toast
- 19. 的Android的AsyncTask
- 20. Android與AsyncTask的網絡問題
- 21. 來自AsyncTask與上下文的Android startActivityForResult
- 22. ProgressDialog與Android中的AsyncTask通信
- 23. 如何應用Asynctask與android中的jsonparsing
- 24. Android中的AsyncTask
- 25. 的AsyncTask Android中
- 26. Rxjava與kotlin
- 27. Android AsyncTask
- 28. Android AsyncTask -
- 29. Asynctask android
- 30. Android的 - 中的AsyncTask
您還可以使用的AsyncTask與Kotlin – AlexTa