View MainActivity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MainActivity : AppCompatActivity() { | |
val textview by lazy { findViewById<View>(R.id.textView) as TextView } | |
val progressBar by lazy { findViewById<View>(R.id.progressbar) as ProgressBar } | |
val buttonMusic by lazy { findViewById<View>(R.id.button_music) as Button } | |
var progressPercentage = 0 | |
private var job: Job? = null | |
val scope by lazy { CoroutineScope(Dispatchers.Main) } | |
override fun onCreate(savedInstanceState: Bundle?) { |
View activityLifecycle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MainActivity : AppCompatActivity() { | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_main) | |
} | |
override fun onDestroy(){ | |
super.onDestroy() | |
} |
View BackOffActivity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
lifecycleScope.launch { | |
viewModel.dogImagesFlow.collect { | |
when (it) { | |
is ResultWrapper.NetworkError -> { | |
errorText.append("${it.errorMessage} \n") | |
... | |
} | |
is ResultWrapper.Success<*> -> { | |
... | |
showLoading(false) |
View BackOffVM.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
val dogImagesFlow = getDogImages().flowOn(Dispatchers.IO) | |
.retryWhen { cause, attempt -> | |
if (cause is IOException && attempt < 3) { | |
val delay = 2000 * (attempt + 1) | |
emit( | |
ResultWrapper.NetworkError( | |
"Attempt No ${attempt + 1} Failed.Retrying again in time ${delay / 1000} sec...", | |
delay.toInt() | |
) | |
) |
View BackOffVM.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private fun getDogImages(): Flow<ResultWrapper> { | |
return flow { | |
emit(ResultWrapper.Loading(true)) | |
delay(3000) | |
val randomNumber = (0..5).random() | |
emit(ResultWrapper.Loading(false)) | |
if (randomNumber < 3) { | |
throw IOException() | |
} | |
emit(ResultWrapper.Success(getList())) |
View Activity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
search.addTextChangedListener { | |
viewModel.setSearchQuery(it.toString()) | |
} | |
lifecycleScope.launch { | |
viewModel.networkOperationResult.collect { value -> | |
textView.append(value) | |
textView.append("\n") | |
} | |
} |
View DebouceViewModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private val _searchQuery = MutableStateFlow("") | |
fun setSearchQuery(query: String) { | |
_searchQuery.value = query | |
} | |
val networkOperationResult: Flow<String> = _searchQuery.debounce(1000).mapLatest { | |
if (it.isEmpty()) { | |
return@mapLatest "" | |
} else { |
View DebouceViewModel.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@AnyThread | |
private suspend fun longNetworkOperation(request: String): String = | |
withContext(Dispatchers.Default) { | |
delay(1000) | |
"Pseudo network delay of 3s delay: $request" | |
} |
View ValidationActivity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private fun initListeners() { | |
editText_name.addTextChangedListener { | |
viewModel.setFirstName(it.toString()) | |
} | |
editText_password.addTextChangedListener { | |
viewModel.setPassword(it.toString()) | |
} | |
editText_user.addTextChangedListener { | |
viewModel.setUserId(it.toString()) | |
} |
View ValidationActivity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private fun collectFlow() { | |
lifecycleScope.launch { | |
viewModel.isSubmitEnabled.collect { value -> | |
submit_button.isEnabled = value | |
} | |
} | |
} |
NewerOlder