mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-03-21 17:20:51 +00:00
Use viewModelScope instead of GlobalScope
This commit is contained in:
parent
b1faa5eed4
commit
e67d0678f9
@ -7,11 +7,8 @@ import com.topjohnwu.magisk.core.Config
|
|||||||
import com.topjohnwu.magisk.core.magiskdb.PolicyDao
|
import com.topjohnwu.magisk.core.magiskdb.PolicyDao
|
||||||
import com.topjohnwu.magisk.core.model.su.SuPolicy
|
import com.topjohnwu.magisk.core.model.su.SuPolicy
|
||||||
import com.topjohnwu.magisk.core.model.su.toPolicy
|
import com.topjohnwu.magisk.core.model.su.toPolicy
|
||||||
import com.topjohnwu.magisk.ktx.now
|
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.GlobalScope
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
@ -54,10 +51,9 @@ class SuRequestHandler(
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@Throws(IOException::class)
|
|
||||||
override fun close() {
|
override fun close() {
|
||||||
if (::output.isInitialized)
|
if (::output.isInitialized)
|
||||||
output.close()
|
runCatching { output.close() }
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SuRequestError : IOException()
|
private class SuRequestError : IOException()
|
||||||
@ -73,7 +69,7 @@ class SuRequestHandler(
|
|||||||
when (e) {
|
when (e) {
|
||||||
is IOException, is PackageManager.NameNotFoundException -> {
|
is IOException, is PackageManager.NameNotFoundException -> {
|
||||||
Timber.e(e)
|
Timber.e(e)
|
||||||
runCatching { close() }
|
close()
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
else -> throw e // Unexpected error
|
else -> throw e // Unexpected error
|
||||||
@ -81,23 +77,24 @@ class SuRequestHandler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun respond(action: Int, time: Int) {
|
suspend fun respond(action: Int, time: Int) {
|
||||||
val until = if (time > 0)
|
val until = if (time > 0)
|
||||||
TimeUnit.MILLISECONDS.toSeconds(now) + TimeUnit.MINUTES.toSeconds(time.toLong())
|
TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()) +
|
||||||
|
TimeUnit.MINUTES.toSeconds(time.toLong())
|
||||||
else
|
else
|
||||||
time.toLong()
|
time.toLong()
|
||||||
|
|
||||||
policy.policy = action
|
policy.policy = action
|
||||||
policy.until = until
|
policy.until = until
|
||||||
|
|
||||||
GlobalScope.launch(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
try {
|
try {
|
||||||
output.writeInt(policy.policy)
|
output.writeInt(policy.policy)
|
||||||
output.flush()
|
output.flush()
|
||||||
} catch (e: IOException) {
|
} catch (e: IOException) {
|
||||||
Timber.e(e)
|
Timber.e(e)
|
||||||
} finally {
|
} finally {
|
||||||
runCatching { close() }
|
close()
|
||||||
if (until >= 0)
|
if (until >= 0)
|
||||||
policyDB.update(policy)
|
policyDB.update(policy)
|
||||||
}
|
}
|
||||||
|
@ -125,10 +125,12 @@ class SuRequestViewModel(
|
|||||||
|
|
||||||
val pos = selectedItemPosition
|
val pos = selectedItemPosition
|
||||||
timeoutPrefs.edit().putInt(handler.policy.packageName, pos).apply()
|
timeoutPrefs.edit().putInt(handler.policy.packageName, pos).apply()
|
||||||
handler.respond(action, Config.Value.TIMEOUT_LIST[pos])
|
|
||||||
|
|
||||||
// Kill activity after response
|
viewModelScope.launch {
|
||||||
DieEvent().publish()
|
handler.respond(action, Config.Value.TIMEOUT_LIST[pos])
|
||||||
|
// Kill activity after response
|
||||||
|
DieEvent().publish()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun cancelTimer() {
|
private fun cancelTimer() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user