Add threadpool for some ops
parent
07b4d0dbc4
commit
728c8e46ed
|
@ -13,3 +13,4 @@
|
|||
.externalNativeBuild
|
||||
.cxx
|
||||
local.properties
|
||||
app/release
|
||||
|
|
|
@ -27,6 +27,7 @@ import androidx.media3.exoplayer.ExoPlayer
|
|||
import androidx.media3.exoplayer.hls.HlsMediaSource
|
||||
import androidx.media3.exoplayer.source.ProgressiveMediaSource
|
||||
import gallery.memories.databinding.ActivityMainBinding
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
@UnstableApi
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
@ -38,6 +39,8 @@ class MainActivity : AppCompatActivity() {
|
|||
ActivityMainBinding.inflate(layoutInflater)
|
||||
}
|
||||
|
||||
val threadPool = Executors.newFixedThreadPool(4)
|
||||
|
||||
private lateinit var nativex: NativeX
|
||||
|
||||
private var player: ExoPlayer? = null
|
||||
|
@ -172,8 +175,8 @@ class MainActivity : AppCompatActivity() {
|
|||
binding.webview.addJavascriptInterface(nativex, "nativex")
|
||||
binding.webview.setLayerType(View.LAYER_TYPE_HARDWARE, null)
|
||||
binding.webview.setBackgroundColor(Color.TRANSPARENT)
|
||||
// binding.webview.clearCache(true)
|
||||
// WebView.setWebContentsDebuggingEnabled(true);
|
||||
// binding.webview.clearCache(true)
|
||||
// WebView.setWebContentsDebuggingEnabled(true);
|
||||
|
||||
// Welcome page or actual app
|
||||
nativex.account.refreshAuthHeader()
|
||||
|
@ -181,6 +184,7 @@ class MainActivity : AppCompatActivity() {
|
|||
|
||||
// Start version check if loaded account
|
||||
if (isApp) {
|
||||
// Do not use the threadPool here since this might block indefinitely
|
||||
Thread { nativex.account.checkCredentialsAndVersion() }.start()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ class NativeX(private val mCtx: MainActivity) {
|
|||
fun playVideo(auid: String?, fileid: String?, urlsArray: String?) {
|
||||
if (auid == null || fileid == null || urlsArray == null) return
|
||||
|
||||
Thread {
|
||||
mCtx.threadPool.submit {
|
||||
// Get URI of remote videos
|
||||
val urls = JSONArray(urlsArray)
|
||||
val list = Array(urls.length()) {
|
||||
|
@ -139,7 +139,7 @@ class NativeX(private val mCtx: MainActivity) {
|
|||
mCtx.initializePlayer(list, fileid)
|
||||
}
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
|
@ -173,11 +173,11 @@ class NativeX(private val mCtx: MainActivity) {
|
|||
|
||||
@JavascriptInterface
|
||||
fun setHasRemote(auids: String, value: Boolean) {
|
||||
Thread {
|
||||
mCtx.threadPool.submit {
|
||||
val parsed = JSONArray(auids)
|
||||
val list = List(parsed.length()) { parsed.getLong(it) }
|
||||
query.setHasRemote(list, value)
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
|
||||
fun handleRequest(request: WebResourceRequest): WebResourceResponse {
|
||||
|
@ -289,16 +289,16 @@ class NativeX(private val mCtx: MainActivity) {
|
|||
// Full sync if this is the first time permission was granted
|
||||
val fullSync = forceFull || !permissions.hasMediaPermission()
|
||||
|
||||
Thread {
|
||||
mCtx.threadPool.submit {
|
||||
// Block for media permission
|
||||
if (!permissions.requestMediaPermissionSync()) return@Thread
|
||||
if (!permissions.requestMediaPermissionSync()) return@submit
|
||||
|
||||
// Full sync requested
|
||||
if (fullSync) query.syncFullDb()
|
||||
|
||||
// Run delta sync and register hooks
|
||||
query.initialize()
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue