Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.21 KB | None | 0 0
  1. class SplashActivity : AppCompatActivity() {
  2.  
  3. override fun onCreate(savedInstanceState: Bundle?) {
  4.         super.onCreate(savedInstanceState)
  5.         CoroutineScope(Dispatchers.Main).launch {
  6.             if (!isOpenBlockScreen()) startActivity(Intent(this, neededActivity)
  7.         }
  8.     }
  9.  
  10. private suspend fun isOpenBlockScreen(): Boolean {
  11.         val checkedVersion = CoroutineScope(Dispatchers.Default).async { CheckVersionRequest().read() }
  12.        
  13.         //Delay ждет 300 млСек и если ответа из сети нет, то он отменяет этот defered и в checkedVersion.await() мы получим исключение
  14.         try {
  15.             val delay = CoroutineScope(Dispatchers.Default).launch {
  16.                 delay(300)
  17.                 if (checkedVersion.isActive) checkedVersion.cancel()
  18.             }
  19.  
  20.             checkedVersion.await().getOrNull()?.let {
  21.                 if (isVersionOlder(it.version)) {
  22.                     startBlockScreen(it.url, it.communication)
  23.                     return true
  24.                 }
  25.             } ?: delay.cancel()
  26.  
  27.             return false
  28.  
  29.         } catch (e: Exception) {
  30.             return false
  31.         }
  32.     }
  33.  
  34.  
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement