[Android] Changing scenes async - load_threaded_get_status not returning THREAD_LOAD_IN_PROGRESS

Godot Version

4.2.2 Stable

Question

Why am I not getting hits on status == ResourceLoader.THREAD_LOAD_IN_PROGRESS when I make a threaded request for a resource on Android?

I tested this on Windows and it works fine, my progress bar updates because it’s receiving new_progress emissions from this node and when I put an if statement down to print the progress value.

However on Android there doesn’t seem to be any load in progress statuses from the ResourceLoader.

I’ve attached basically what I have in my project here, but reduced the number of scene targets to just 2 for simplicity. The loading scene is just a progress bar w/ a script attached to it to listen to this node.

extends Node

signal new_progress(amount: float)

const main_menu_scene: String = "main_menu"
const game_scene: String = "game_scene"

var scenes: Dictionary = {
	main_menu_scene: "res://scenes/main_menu.tscn",
	game_scene: "res://scenes/game_scene.tscn",
}

var loading_scene: PackedScene = preload("res://scenes/loading_scene.tscn")
var loading_scene_inst: Node

var scene_target: String = ""

func _process(delta: float) -> void:
	if !scene_target.is_empty():
		var progress: Array = []
		var status: int = ResourceLoader.load_threaded_get_status(scenes[scene_target], progress)
		if status == ResourceLoader.THREAD_LOAD_IN_PROGRESS:
			print(progress[0])
			new_progress.emit(progress[0])
		elif status == ResourceLoader.THREAD_LOAD_LOADED:
			var inst_scene: PackedScene = ResourceLoader.load_threaded_get(scenes[scene_target]) as PackedScene
			var inst = inst_scene.instantiate()
			get_tree().current_scene.add_child(inst)
			get_tree().current_scene.remove_child(loading_scene_inst)
			scene_target = ""
		elif status == ResourceLoader.THREAD_LOAD_FAILED:
			print("Load failed")
		elif status == ResourceLoader.THREAD_LOAD_INVALID_RESOURCE:
			print("Invalid resource")

func load_scene(scene_target: String) -> void:
	for c in get_tree().current_scene.get_children():
		c.queue_free()
	self.scene_target = scene_target
	loading_scene_inst = loading_scene.instantiate()
	get_tree().current_scene.add_child(loading_scene_inst)
	new_progress.connect(loading_scene_inst.update_progress)
	var error = ResourceLoader.load_threaded_request(scenes[scene_target])
	if error != 0:
		print(error)