Add threadpool for some ops

pull/653/merge
Varun Patil 2023-10-04 11:46:58 -07:00
parent 07b4d0dbc4
commit 728c8e46ed
3 changed files with 14 additions and 9 deletions

1
.gitignore vendored
View File

@ -13,3 +13,4 @@
.externalNativeBuild
.cxx
local.properties
app/release

View File

@ -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()
}
}

View File

@ -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()
}
}
}
}