Skip to main content

Posts

Showing posts with the label Coroutines

android kotlin - Coroutines get html from url

MainActivity.kt package com.example.coroutine import android.os.Bundle import android.text.method.ScrollingMovementMethod import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.IOException import java.net.MalformedURLException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // make text view text scrollable textView.movementMethod =ScrollingMovementMethod() // url to get html val url: URL? = try { URL("https://developer.android.com/kotlin/") } catch (e: MalformedURLException) { // catch invalid url exception button.isEnabled = false textView.text = e.message...

android kotlin - Coroutines with timeout or null

MainActivity.kt package com.example.coroutine import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.* import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.IOException import java.net.MalformedURLException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // url of image to download val urlImage:URL? = try { URL("https://images.pexels.com/photos/298246/" + "pexels-photo-298246.jpeg?" + "auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260") }catch (e:MalformedURLException){ button.isEnabled = false button2.isEnable...

android kotlin - Coroutines async with timeout

MainActivity.kt package com.example.coroutine import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.* import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.IOException import java.net.MalformedURLException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // url of image to download val urlImage:URL? = try { URL("https://images.pexels.com/photos/1031770/" + "pexels-photo-1031770.jpeg?" + "auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260") }catch (e:MalformedURLException){ button.isEnabled = false bu...

android kotlin - Coroutines with timeout

MainActivity.kt package com.example.coroutine import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.* import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { textView.text = "Repeat 200 times, timeout 5000" + " milliseconds and delay 100 milliseconds\n\n\n" lifecycleScope.launch(Dispatchers.Default) { try { withTimeout(5000){ repeat(200){i-> withContext(Dispatchers.Main){ delay(100) textView.append("$i, ") } } ...

android kotlin - Coroutines JSON from URL

MainActivity.kt package com.example.coroutine import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.* import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.json.JSONException import org.json.JSONObject import java.io.BufferedReader import java.io.IOException import java.io.InputStreamReader import java.net.MalformedURLException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // url to download json data val url:URL? = try { URL("https://pastebin.com/raw/2bW31yqa") }catch (e:MalformedURLException){ Log.d("Exception", e.toString()) null } // downloa...

android kotlin - Coroutines with LiveData

MainActivity.kt package com.example.coroutine import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.* import androidx.lifecycle.Observer import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.json.JSONObject import java.io.BufferedReader import java.io.IOException import java.io.InputStream import java.io.InputStreamReader import java.net.URL import java.text.SimpleDateFormat import java.util.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // live data instance val apiTime = MutableLiveData<APITime>() // initially fetch json data fetchJson(apiTime) // observe the api time live data apiTime.observe(this, Observer { textView.text = "" i...

android kotlin - Coroutines with ViewModel LiveData

MainActivity.kt package com.example.coroutine import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { private lateinit var model: TimeViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // initialize the time view model model = ViewModelProvider(this).get(TimeViewModel::class.java) // observe the api time live data model.apiTime.observe(this, Observer { textView.text = "" it?.apply { textView.append(zone) textView.append("\n" + date) textView.append("\n\n" + time) } }) // fetch api json data button.setOnClickListener { ...

android kotlin - Coroutines Room ViewModel LiveData

MainActivity.kt package com.example.coroutine import android.os.Bundle import android.text.method.ScrollingMovementMethod import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import kotlinx.android.synthetic.main.activity_main.* import java.util.UUID import kotlin.random.Random class MainActivity : AppCompatActivity() { private lateinit var model: StudentViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // make text view text scrollable textView.movementMethod = ScrollingMovementMethod() // initialize the student view model model = ViewModelProvider(this).get(StudentViewModel::class.java) // observe the students live data model.students.observe(this, Observer { students-> textView.text = "Students(${students.size})..." ...

android kotlin - Room with coroutines

MainActivity.kt package com.example.coroutine import android.os.Bundle import android.text.method.ScrollingMovementMethod import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.util.* import kotlin.random.Random class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // get room database instance val db = RoomSingleton.getInstance(this) // make text view text scrollable textView.movementMethod = ScrollingMovementMethod() btnInsert.setOnClickListener { // generate a new student val student = Student( null, UUID.randomUUID().toString(), Random.nextInt(100) ) // insert new student in room database GlobalScope.launch(Dispatcher...

android kotlin - Coroutines async await all

MainActivity.kt package com.example.coroutine import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.IOException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // urls of images val urlImage1 = URL("https://images.pexels.com/photos/1080762/" + "pexels-photo-1080762.jpeg?" + "auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260") val urlImage2 = URL("https://images.pexels.com/photos/1118440/" + "pexels-photo-1118440.jpeg?" + "auto=compress&cs=tinysrgb&dpr=2&h=75...

android kotlin - Coroutines cancel job

MainActivity.kt package com.example.coroutine import android.graphics.Color import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* class MainActivity : AppCompatActivity() { lateinit var job:Job override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { // initialize the job job = GlobalScope.launch(Dispatchers.Main) { textView.setTextColor(Color.parseColor("#006A4E")) textView.text = "Loop through 10 down to 0" for(i in 10 downTo 0){ delay(1000) textView.append("\n" + i) } } // invoke on job completion job.invokeOnCompletion { it?.apply { ...